From ab54917bceb4943f6750f589ffe6a032b2770fb1 Mon Sep 17 00:00:00 2001 From: Anthony LaTorre Date: Sat, 18 Jun 2011 00:12:09 -0400 Subject: moved class definitions for Solid, Mesh, Material, and Surface into geometry.py and moved instances of these classes into separate folders. the Solid object no longer contains a rotation, displacement, or id variable; instead, they are passed to a geometry object when calling add_solid(). --- materials/ratdb.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 materials/ratdb.py (limited to 'materials/ratdb.py') diff --git a/materials/ratdb.py b/materials/ratdb.py new file mode 100644 index 0000000..2b14761 --- /dev/null +++ b/materials/ratdb.py @@ -0,0 +1,35 @@ +import re +import json + +trailing_comma = re.compile(r',[ ]*\]') +trailing_double_marker = re.compile(r'(\d+[.]?)(d)([^+\-\d])') +trailing_period = re.compile(r'(\d+\.)(\W)') +double_marker = re.compile(r'(\d+)(d)([+-]?\d)') +comments = re.compile(r'//.*') +key = re.compile(r'([ ]*)(\w*)([ ]*:.*)') + +def load(f): + s = f.read() + s = trailing_comma.sub(']', s) + s = trailing_double_marker.sub(r'\1\3', s) + s = double_marker.sub(r'\1e\3', s) + s = comments.sub('', s) + s = key.sub(r'\1"\2"\3', s) + s = trailing_period.sub(r'\g<1>0\2', s) + + db = {} + for data in re.findall('{.*?}', s, flags=re.DOTALL): + d = json.loads(data) + + name = d['name'] + index = d['index'] + + if name not in db: + db[name] = {} + + if index not in db[name]: + db[name][index] = {} + + db[name][index].update(d) + + return db -- cgit