Mercurial > hg > MakeItSo
comparison makeitso/template.py @ 42:73dac34d2692
more stubbing of API class; first get something off the ground; then rewrite
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Tue, 04 Jan 2011 07:38:49 -0800 |
parents | 9956e13558dd |
children | 6e08cca7d656 |
comparison
equal
deleted
inserted
replaced
41:9956e13558dd | 42:73dac34d2692 |
---|---|
1 """ | 1 """ |
2 basic API template class | 2 basic API template class |
3 """ | 3 """ |
4 | 4 |
5 import os | |
5 import sys | 6 import sys |
6 from makeitso import ContentTemplate | 7 from makeitso import ContentTemplate |
8 from makeitso import PolyTemplate | |
7 | 9 |
8 class Variable(object): | 10 class Variable(object): |
9 """variable object for MakeItSo templates""" | 11 """variable object for MakeItSo templates""" |
10 | 12 |
11 def __init__(self, name, default=None, description=None, | 13 def __init__(self, name, default=None, description=None, |
36 if self.default: | 38 if self.default: |
37 return 'Enter %s [DEFAULT: %s]:' % (description, repr(self.default)) | 39 return 'Enter %s [DEFAULT: %s]:' % (description, repr(self.default)) |
38 else: | 40 else: |
39 return 'Enter %s:' % description | 41 return 'Enter %s:' % description |
40 | 42 |
41 class MakeItSoTemplate(object): | 43 class MakeItSoTemplate(ContentTemplate): |
44 """API template for MakeItSo""" | |
45 | |
46 # name of the template | |
47 name = '' | |
48 | |
49 # templates to interpolate | |
50 # paths are relative to __file__ unless absolute or URIs | |
51 templates = [] | |
52 | |
53 # variables | |
54 vars = [] | |
55 | |
56 # inspect the templates for more variables | |
57 look = False | |
58 | |
59 def __init__(self, output=None, interactive=True, **variables): | |
60 assert self.templates | |
61 self.output = output | |
62 self.interactive = interactive | |
63 self.location = os.path.dirnme(os.path.abspath(__file__)) | |
64 self.defaults = variables.copy | |
65 | |
66 # ensure all of these templates exist | |
67 for template in self.templates: | |
68 if template.startswith('http://') or template.startswith('https://'): | |
69 continue | |
70 if os.path.isabs(template): | |
71 path = template | |
72 else: | |
73 path = os.path.join(self.location, template) | |
74 assert os.path.exists(template) | |
42 | 75 |
43 def pre(self, **variables): | 76 def pre(self, **variables): |
44 """do stuff before interpolation""" | 77 """do stuff before interpolation""" |
45 | 78 |
46 def post(self, **variables): | 79 def post(self, **variables): |
47 """do stuff after interpolation""" | 80 """do stuff after interpolation""" |
48 | 81 |
49 | 82 |
83 class PasteScriptTemplate(MakeItSoTemplate): | |
84 """template for backwards compatability with PasteScript""" |