~slgeorge/blogofile/trunk

« back to all changes in this revision

Viewing changes to blogofile/template.py

  • Committer: Doug Latornell
  • Date: 2012-11-08 00:09:01 UTC
  • Revision ID: git-v1:61245b5ab23e31a85c6713e24731daa7a495d6c9
Let Mako/Jinja2 read templates & deal with encoding; re: #134 & #135.

Show diffs side-by-side

added added

removed removed

Lines of Context:
89
89
    template_lookup = None
90
90
 
91
91
    def __init__(self, template_name, caller=None, lookup=None, src=None):
 
92
        """Templates can be provided in 2 ways:
 
93
 
 
94
             1) Pass template_name to Mako for lookup
 
95
             2) Construct a Mako Template object from the src string
 
96
        """
92
97
        Template.__init__(self, template_name, caller)
93
98
        self.create_lookup()
94
99
        if lookup:
95
 
            #M ake sure it's a mako environment:
 
100
            # Make sure it's a mako environment:
96
101
            if type(lookup) != mako.lookup.TemplateLookup:
97
102
                raise TemplateEngineError(
98
103
                    "MakoTemplate was passed a non-mako lookup environment:"
99
104
                    " {0}".format(lookup))
100
105
            self.template_lookup = lookup
101
106
        self.add_template_path(bf.writer.temp_proc_dir)
102
 
        # Templates can be provided three ways:
103
 
        #  1) src is a template passed via string
104
 
        #  2) template_name can be a path to a file
105
 
        #  3) template_name can be a name to lookup
106
107
        if src:
107
108
            self.mako_template = mako.template.Template(
108
109
                src,
109
110
                output_encoding="utf-8",
110
111
                lookup=self.template_lookup)
111
 
        elif os.path.isfile(template_name):
112
 
            with open(self.template_name) as t_file:
113
 
                self.mako_template = mako.template.Template(
114
 
                    t_file.read(),
115
 
                    output_encoding="utf-8",
116
 
                    lookup=self.template_lookup)
117
112
        else:
118
113
            self.mako_template = self.template_lookup.get_template(
119
114
                template_name)
174
169
            "_templates", bf.config.site.base_template)
175
170
 
176
171
    def get_source(self, environment, template):
 
172
        print(template)
177
173
        if template == "bf_base_template":
178
174
            with open(self.bf_base_template) as f:
179
175
                return (f.read(), self.bf_base_template, lambda: False)
187
183
    template_lookup = None
188
184
 
189
185
    def __init__(self, template_name, caller=None, lookup=None, src=None):
 
186
        """Templates can be provided in 2 ways:
 
187
 
 
188
             1) Pass template_name to Jinja2 for loading
 
189
             2) Construct a template object from the src string
 
190
        """
190
191
        Template.__init__(self, template_name, caller)
191
192
        self.create_lookup()
192
193
        if lookup:
197
198
                    " {0}".format(lookup))
198
199
            self.template_lookup = lookup
199
200
        self.add_template_path(bf.writer.temp_proc_dir)
200
 
        # Templates can be provided three ways:
201
 
        #  1) src is a template passed via string
202
 
        #  2) template_name can be a path to a file
203
 
        #  3) template_name can be a name to lookup
204
 
 
205
 
        # Jinja needs to save the loading of the source until render
206
 
        # time in order to get the attrs into the loader.
207
 
        # Just save the params for later use:
 
201
        # Jinja needs to delay the loading of the source until render
 
202
        # time in order to get the attrs into the loader,
 
203
        # so just save src until then.
208
204
        self.src = src
209
205
 
210
206
    @classmethod
236
232
                self.template_lookup.loader.bf_base_template)
237
233
        if self.src:
238
234
            self.jinja_template = self.template_lookup.from_string(self.src)
239
 
        elif os.path.isfile(self.template_name):
240
 
            with open(self.template_name) as t_file:
241
 
                self.jinja_template = self.template_lookup.from_string(
242
 
                    t_file.read())
 
235
        # elif os.path.isfile(self.template_name):
 
236
        #     with open(self.template_name) as t_file:
 
237
        #         self.jinja_template = self.template_lookup.from_string(
 
238
        #             t_file.read())
243
239
        else:
244
240
            self.jinja_template = self.template_lookup.get_template(
245
241
                self.template_name)