comparison makeitso/template.py @ 63:b91133e3b02d

override get_variables for API template; could instead do this in the ctor, alternately
author Jeff Hammel <jhammel@mozilla.com>
date Thu, 06 Jan 2011 17:58:34 -0800
parents 30100690ad3f
children c20277dbf8fa
comparison
equal deleted inserted replaced
62:30100690ad3f 63:b91133e3b02d
70 """ 70 """
71 - output : output file or directory 71 - output : output file or directory
72 - interactive : whether tointeractively get variables 72 - interactive : whether tointeractively get variables
73 - usedefaults : try to use the default values if not specified 73 - usedefaults : try to use the default values if not specified
74 """ 74 """
75 75
76 # boilerplate
76 assert self.templates 77 assert self.templates
77 self.output = output 78 self.output = output
78 self.interactive = interactive 79 self.interactive = interactive
79 self.location = os.path.dirname(os.path.abspath(__file__)) 80 self.location = os.path.dirname(os.path.abspath(__file__))
80 self.defaults = variables.copy() 81 self.defaults = variables.copy()
82 self.usedefaults = usedefaults
81 83
82 # make a dictionary of the variables for lookup convenience 84 # make a dictionary of the variables for lookup convenience
83 self.vardict = {} 85 self.vardict = {}
84 for i in self.vars: 86 for i in self.vars:
85 self.vardict[i.name] = i 87 self.vardict[i.name] = i
92 path = template 94 path = template
93 else: 95 else:
94 path = os.path.join(self.location, template) 96 path = os.path.join(self.location, template)
95 assert os.path.exists(template) 97 assert os.path.exists(template)
96 98
99 def get_variables(self, **variables):
100 # XXX could do this in the ctor
101 vars = ContentTemplate.get_variables(self, **variables)
102 if self.usedefaults:
103 for variable in self.vars:
104 if variable.name in vars:
105 continue
106 if variable.default is not Undefined:
107 vars[variable.name] = variable.default
108 return vars
109
97 def missing(self, **variables): 110 def missing(self, **variables):
111 vars = self.get_variables(**variables)
98 missing = set([]) 112 missing = set([])
99 if self.look: 113 if self.look:
100 pass 114 pass
101 else: 115 else:
102 for var in self.vars: 116 for var in self.vars:
103 if self.usedefaults: 117 if self.usedefaults:
104 pass 118 import pdb; pdb.set_trace()
105 else: 119 else:
106 pass 120 pass
107 121
108 def pre(self, **variables): 122 def pre(self, **variables):
109 """do stuff before interpolation""" 123 """do stuff before interpolation"""