Mercurial > hg > MakeItSo
comparison makeitso/template.py @ 65:0152741621c1
check in a failing test wrt location
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Fri, 07 Jan 2011 10:17:48 -0800 |
parents | c20277dbf8fa |
children | 7821c82772f5 |
comparison
equal
deleted
inserted
replaced
64:c20277dbf8fa | 65:0152741621c1 |
---|---|
7 from makeitso import ContentTemplate | 7 from makeitso import ContentTemplate |
8 from makeitso import PolyTemplate | 8 from makeitso import PolyTemplate |
9 | 9 |
10 class Undefined(object): | 10 class Undefined(object): |
11 """marker class for variables""" | 11 """marker class for variables""" |
12 def __int__(self): | 12 def __nonzero__(self): |
13 return 0 | 13 return False |
14 Undefined = Undefined() # singleton | 14 Undefined = Undefined() # singleton |
15 | 15 |
16 class Variable(object): | 16 class Variable(object): |
17 """variable object for MakeItSo templates""" | 17 """variable object for MakeItSo templates""" |
18 | 18 |
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 # boilerplate |
77 assert self.templates | 77 assert self.templates |
78 variables = variables or {} | |
78 self.output = output | 79 self.output = output |
79 self.interactive = interactive | 80 self.interactive = interactive |
80 self.location = os.path.dirname(os.path.abspath(__file__)) | 81 self.location = os.path.dirname(os.path.abspath(__file__)) |
81 self.defaults = variables.copy() | 82 self.defaults = variables.copy() |
82 self.usedefaults = usedefaults | 83 self.usedefaults = usedefaults |
85 self.vardict = {} | 86 self.vardict = {} |
86 for i in self.vars: | 87 for i in self.vars: |
87 self.vardict[i.name] = i | 88 self.vardict[i.name] = i |
88 | 89 |
89 # ensure all of these templates exist | 90 # ensure all of these templates exist |
91 self._templates = [] | |
90 for template in self.templates: | 92 for template in self.templates: |
91 if template.startswith('http://') or template.startswith('https://'): | 93 if template.startswith('http://') or template.startswith('https://'): |
94 self._templates.append(template) | |
92 continue | 95 continue |
93 if os.path.isabs(template): | 96 if os.path.isabs(template): |
94 path = template | 97 path = template |
95 else: | 98 else: |
96 path = os.path.join(self.location, template) | 99 path = os.path.join(self.location, template) |
97 assert os.path.exists(template) | 100 assert os.path.exists(path), "%s does not exist" % path |
101 self._templates.append(path) | |
98 | 102 |
99 def get_variables(self, **variables): | 103 def get_variables(self, **variables): |
100 # XXX could do this in the ctor | 104 # XXX could do this in the ctor |
101 vars = ContentTemplate.get_variables(self, **variables) | 105 vars = ContentTemplate.get_variables(self, **variables) |
102 if self.usedefaults: | 106 if self.usedefaults: |
125 def pre(self, **variables): | 129 def pre(self, **variables): |
126 """do stuff before interpolation""" | 130 """do stuff before interpolation""" |
127 | 131 |
128 def substitute(self, **variables): | 132 def substitute(self, **variables): |
129 """do the substitution""" | 133 """do the substitution""" |
134 | |
130 vars = self.get_variables(**variables) | 135 vars = self.get_variables(**variables) |
131 self.pre(**vars) | 136 self.pre(**vars) |
132 self.check_missing(vars) | 137 self.check_missing(vars) |
133 | 138 |
134 # do the substitution | 139 # do the substitution |
135 PolyTemplate(self.templates, | 140 PolyTemplate(self.templates, |
136 output=self.output, | 141 output=self.output, |
137 interactive=self.interactive, | 142 interactive=self.interactive, |
138 variables = vars | 143 variables=vars) |
139 | |
140 | 144 |
141 self.post(**variables) | 145 self.post(**variables) |
142 | 146 |
143 def post(self, **variables): | 147 def post(self, **variables): |
144 """do stuff after interpolation""" | 148 """do stuff after interpolation""" |