Mercurial > genshi > mirror
comparison genshi/template/base.py @ 715:b5bd8c109209 trunk
Enable pickling of `Template` and `Code` objects.
author | cmlenz |
---|---|
date | Tue, 08 Apr 2008 22:34:01 +0000 |
parents | fc6d9d2a3527 |
children | 01bdf155db95 |
comparison
equal
deleted
inserted
replaced
714:fc6d9d2a3527 | 715:b5bd8c109209 |
---|---|
361 self.filepath = filepath or filename | 361 self.filepath = filepath or filename |
362 self.filename = filename | 362 self.filename = filename |
363 self.loader = loader | 363 self.loader = loader |
364 self.lookup = lookup | 364 self.lookup = lookup |
365 self.allow_exec = allow_exec | 365 self.allow_exec = allow_exec |
366 | 366 self._init_filters() |
367 self.filters = [self._flatten, self._eval, self._exec] | |
368 if loader: | |
369 self.filters.append(self._include) | |
370 | 367 |
371 if isinstance(source, basestring): | 368 if isinstance(source, basestring): |
372 source = StringIO(source) | 369 source = StringIO(source) |
373 else: | 370 else: |
374 source = source | 371 source = source |
375 try: | 372 try: |
376 self.stream = list(self._prepare(self._parse(source, encoding))) | 373 self.stream = list(self._prepare(self._parse(source, encoding))) |
377 except ParseError, e: | 374 except ParseError, e: |
378 raise TemplateSyntaxError(e.msg, self.filepath, e.lineno, e.offset) | 375 raise TemplateSyntaxError(e.msg, self.filepath, e.lineno, e.offset) |
379 | 376 |
377 def __getstate__(self): | |
378 state = self.__dict__.copy() | |
379 state['filters'] = [] | |
380 return state | |
381 | |
382 def __setstate__(self, state): | |
383 self.__dict__ = state | |
384 self._init_filters() | |
385 | |
380 def __repr__(self): | 386 def __repr__(self): |
381 return '<%s "%s">' % (self.__class__.__name__, self.filename) | 387 return '<%s "%s">' % (self.__class__.__name__, self.filename) |
388 | |
389 def _init_filters(self): | |
390 self.filters = [self._flatten, self._eval, self._exec] | |
391 if self.loader: | |
392 self.filters.append(self._include) | |
382 | 393 |
383 def _parse(self, source, encoding): | 394 def _parse(self, source, encoding): |
384 """Parse the template. | 395 """Parse the template. |
385 | 396 |
386 The parsing stage parses the template and constructs a list of | 397 The parsing stage parses the template and constructs a list of |