# HG changeset patch # User Jeff Hammel # Date 1294424268 28800 # Node ID 0152741621c1f5b12abe0fbbb8645cdb66f4c9c9 # Parent c20277dbf8fa67836cca3b2bfc4d1f4d9fb49a9a check in a failing test wrt location diff -r c20277dbf8fa -r 0152741621c1 examples/doctest.txt --- a/examples/doctest.txt Thu Jan 06 18:04:58 2011 -0800 +++ b/examples/doctest.txt Fri Jan 07 10:17:48 2011 -0800 @@ -35,7 +35,7 @@ 'Hello fleem' >>> os.remove(buffer) -Directory case: +Directory case:: >>> exampledir = os.path.join(here, 'directory-example') >>> tempdir = tempfile.mkdtemp() @@ -53,14 +53,14 @@ 'It' >>> shutil.rmtree(tempdir) -Mixed case: +Mixed case:: >>> template = makeitso.PolyTemplate([example, exampledir], interactive=False) >>> variables = sorted(template.missing()) >>> variables ['bar', 'foo', 'name', 'subdir'] -You need to provide output for mixing files and directory templates: +You need to provide output for mixing files and directory templates:: >>> variables = dict([(i, i.title()) for i in variables]) >>> try: @@ -70,10 +70,19 @@ >>> e AssertionError('Must specify output ... -Provide an output: +Provide an output:: >>> template = makeitso.PolyTemplate([example, exampledir], output=tempdir, interactive=False) >>> template.substitute(**variables) >>> sorted(os.listdir(tempdir)) ['Subdir', 'example.txt', 'foo.txt'] >>> shutil.rmtree(tempdir) + +Test API templates:: + + >>> from makeitso.template import MakeItSoTemplate, Variable + >>> class MyTemplate(MakeItSoTemplate): + ... name = 'foo' + ... templates = ['example.txt'] + ... vars = [Variable(name='name', default='bar')] + >>> apitemplate = MyTemplate() diff -r c20277dbf8fa -r 0152741621c1 makeitso/template.py --- a/makeitso/template.py Thu Jan 06 18:04:58 2011 -0800 +++ b/makeitso/template.py Fri Jan 07 10:17:48 2011 -0800 @@ -9,8 +9,8 @@ class Undefined(object): """marker class for variables""" - def __int__(self): - return 0 + def __nonzero__(self): + return False Undefined = Undefined() # singleton class Variable(object): @@ -75,6 +75,7 @@ # boilerplate assert self.templates + variables = variables or {} self.output = output self.interactive = interactive self.location = os.path.dirname(os.path.abspath(__file__)) @@ -87,14 +88,17 @@ self.vardict[i.name] = i # ensure all of these templates exist + self._templates = [] for template in self.templates: if template.startswith('http://') or template.startswith('https://'): + self._templates.append(template) continue if os.path.isabs(template): path = template else: path = os.path.join(self.location, template) - assert os.path.exists(template) + assert os.path.exists(path), "%s does not exist" % path + self._templates.append(path) def get_variables(self, **variables): # XXX could do this in the ctor @@ -127,6 +131,7 @@ def substitute(self, **variables): """do the substitution""" + vars = self.get_variables(**variables) self.pre(**vars) self.check_missing(vars) @@ -135,8 +140,7 @@ PolyTemplate(self.templates, output=self.output, interactive=self.interactive, - variables = vars - + variables=vars) self.post(**variables)