]> git.tdb.fi Git - libs/gl.git/blobdiff - blender/io_mspgl/datafile.py
Redesign file writing in the Blender exporter
[libs/gl.git] / blender / io_mspgl / datafile.py
diff --git a/blender/io_mspgl/datafile.py b/blender/io_mspgl/datafile.py
new file mode 100644 (file)
index 0000000..09fb86c
--- /dev/null
@@ -0,0 +1,35 @@
+class Statement:
+       def __init__(self, keyword, *args):
+               self.keyword = keyword
+               self.args = list(args)
+               self.sub = []
+
+       def append(self, v):
+               self.args.append(v)
+
+       def write_to_file(self, f, indent=0):
+               s = self.keyword
+               for a in self.args:
+                       if type(a)==float:
+                               s += " {:#.6g}".format(a)
+                       elif type(a)==str:
+                               s += ' "{}"'.format(a)
+                       else:
+                               s += " {}".format(a)
+
+               tabs = '\t'*indent
+               f.write("{}{}".format(tabs, s))
+               if self.sub:
+                       f.write("\n{}{{\n".format(tabs))
+                       for s in self.sub:
+                               s.write_to_file(f, indent+1)
+                       f.write("{}}};\n".format(tabs))
+               else:
+                       f.write(";\n")
+
+class Token:
+       def __init__(self, text):
+               self.text = text
+
+       def __str__(self):
+               return self.text