2 def __init__(self, keyword, *args):
10 def write_to_file(self, f, indent=0):
14 s += " {:#.6g}".format(a)
16 s += ' "{}"'.format(a)
17 elif type(a)==Resource:
18 s += ' "{}"'.format(a.name)
23 f.write("{}{}".format(tabs, s))
25 f.write("\n{}{{\n".format(tabs))
27 s.write_to_file(f, indent+1)
28 f.write("{}}};\n".format(tabs))
34 def __init__(self, text):
42 def __init__(self, name):
47 def create_reference_statement(self, keyword, *args):
49 raise TypeError("create_reference_statement expected at least 2 arguments, got {}".format(1+len(args)))
57 raise TypeError("create_reference_statement expected a Resource argument, found none")
59 self.references += [r for r in resources if r not in self.references]
60 return Statement(keyword, *args)
62 def create_embed_statement(self, keyword, *args):
64 raise TypeError("create_embed_statement expected at least 2 arguments, got {}".format(1+len(args)))
66 if type(res)!=Resource:
67 raise TypeError("create_embed_statement expected a Resource as last argument, got {}".format(type(args[-1]).__name__))
69 self.references += [r for r in res.references if r not in self.references]
70 st = Statement(keyword, *args[:-1])
71 st.sub = res.statements
74 def collect_references(self):
76 for r in self.references:
77 refs += [e for e in r.collect_references() if e not in refs]
78 refs += [e for e in self.references if e not in refs]