Mercurial > hg > MakeItSo
comparison makeitso/template.py @ 113:c3b8ce33d3ad
make variable getting logic a little less horrible
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Mon, 17 Jan 2011 14:32:07 -0800 |
parents | 51c9cb49edec |
children | b2152efec89a |
comparison
equal
deleted
inserted
replaced
112:51c9cb49edec | 113:c3b8ce33d3ad |
---|---|
135 if variable.default is not Undefined: | 135 if variable.default is not Undefined: |
136 vars[variable.name] = variable.default | 136 vars[variable.name] = variable.default |
137 return vars | 137 return vars |
138 | 138 |
139 def missing(self, **variables): | 139 def missing(self, **variables): |
140 | |
141 # boilerplate | |
140 vars = self.get_variables(**variables) | 142 vars = self.get_variables(**variables) |
141 missing = set([]) | 143 missing = set([]) |
142 | 144 |
143 # get known needed variables | 145 # get known needed variables |
144 for var in self.vars: | 146 for var in self.vars: |
145 if var.name in vars: | 147 if var.name not in vars: |
146 if var.default is Undefined: | 148 if var.default is Undefined: |
147 missing.add(var.name) | 149 missing.add(var.name) |
148 continue | 150 continue |
149 if (not self.usedefaults) and (not var.isset()): | 151 if (not self.usedefaults) and (not var.isset()): |
150 missing.add(var.name) | 152 missing.add(var.name) |
151 else: | |
152 missing.add(var.name) | |
153 | 153 |
154 # scan templates for other variables | |
154 if self.look: | 155 if self.look: |
155 # scan templates for other variables | |
156 template = PolyTemplate(self._templates, | 156 template = PolyTemplate(self._templates, |
157 interactive=False, | 157 interactive=False, |
158 variables=vars) | 158 variables=vars) |
159 missing.update(template.missing()) | 159 missing.update(template.missing()) |
160 | 160 |
163 def pre(self, variables, output): | 163 def pre(self, variables, output): |
164 """do stuff before interpolation""" | 164 """do stuff before interpolation""" |
165 | 165 |
166 def substitute(self, variables, output=None): | 166 def substitute(self, variables, output=None): |
167 """do the substitution""" | 167 """do the substitution""" |
168 | 168 |
169 # get the variables | |
169 vars = self.get_variables(**variables) | 170 vars = self.get_variables(**variables) |
170 self.pre(vars, output) | 171 self.pre(vars, output) |
171 self.check_missing(vars) | 172 self.check_missing(vars) |
172 | 173 |
173 # do the substitution | 174 # do the substitution |
174 template = PolyTemplate(self._templates, | 175 template = PolyTemplate(self._templates, |
175 interactive=self.interactive, | 176 interactive=self.interactive, |
176 variables=vars) | 177 variables=vars) |
177 template.check_output(output) | 178 template.check_output(output) |
178 template.substitute({}, output) | 179 template.substitute({}, output) |
179 | 180 |
181 # do whatever you need to do afterwards | |
180 self.post(vars, output) | 182 self.post(vars, output) |
181 | 183 |
182 def post(self, variables, output): | 184 def post(self, variables, output): |
183 """do stuff after interpolation""" | 185 """do stuff after interpolation""" |
184 | 186 |