]> git.tdb.fi Git - libs/gl.git/blobdiff - blender/io_mspgl/datafile.py
Refactor writing files in the Blender exporter
[libs/gl.git] / blender / io_mspgl / datafile.py
index 18e57c4e88f7a841b4699cc53c8af06a4b413ff4..6ed3ea4575a3b63ff32de414d8fc7fbaaa2dcbee 100644 (file)
@@ -44,8 +44,9 @@ class Token:
 
 
 class Resource:
-       def __init__(self, name):
+       def __init__(self, name, keyword):
                self.name = name
+               self.keyword = keyword
                self.statements = []
                self.references = []
 
@@ -82,3 +83,20 @@ class Resource:
                        refs += [e for e in r.collect_references() if e not in refs]
                refs += [e for e in self.references if e not in refs]
                return refs
+
+       def write_to_file(self, fn):
+               with open(fn, "w") as out_file:
+                       for s in self.statements:
+                               s.write_to_file(out_file)
+
+       def write_collection(self, fn, *, exclude_self=False, filter=None):
+               items = self.collect_references()
+               if not exclude_self:
+                       items.append(self)
+               with open(fn, "w") as out_file:
+                       for i in items:
+                               if filter and not filter(i):
+                                       continue
+                               st = Statement(i.keyword, i.name)
+                               st.sub = i.statements
+                               st.write_to_file(out_file)