Mercurial > genshi > genshi-test
diff markup/template.py @ 172:4b4e80b2b0b5
Fix for #30 (trouble using `py:def`inside a match template)
author | cmlenz |
---|---|
date | Fri, 18 Aug 2006 23:23:45 +0000 |
parents | 718cba809cea |
children | ae5d2f4a378a |
line wrap: on
line diff
--- a/markup/template.py +++ b/markup/template.py @@ -153,7 +153,7 @@ self.expr = value and Expression(value, filename, lineno) or None except SyntaxError, err: err.msg += ' in expression "%s" of "%s" directive' % (value, - self.name) + self.tagname) raise TemplateSyntaxError(err, filename, lineno, offset + (err.offset or 0)) @@ -166,10 +166,12 @@ expr = ' "%s"' % self.expr.source return '<%s%s>' % (self.__class__.__name__, expr) - def name(self): - """Return the local name of the directive as it is used in templates.""" + def tagname(self): + """Return the local tag name of the directive as it is used in + templates. + """ return self.__class__.__name__.lower().replace('directive', '') - name = property(name) + tagname = property(tagname) def _apply_directives(stream, ctxt, directives): @@ -351,6 +353,9 @@ return [] + def __repr__(self): + return '<%s "%s">' % (self.__class__.__name__, self.name) + class ForDirective(Directive): """Implementation of the `py:for` template directive for repeating an @@ -707,11 +712,11 @@ else: self.source = source self.basedir = basedir - self.filename = filename or '<string>' + self.filename = filename if basedir and filename: self.filepath = os.path.join(basedir, filename) else: - self.filepath = '<string>' + self.filepath = None self.filters = [] self.parse() @@ -883,7 +888,7 @@ """Internal stream filter that evaluates any expressions in `START` and `TEXT` events. """ - filters = (self._eval, self._match) + filters = (self._eval, self._match, self._flatten) for kind, data, pos in stream: