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
Copyright (C) 2012-2017 Edgewall Software