Mercurial > genshi > mirror
comparison markup/template.py @ 191:3289055a8c32 trunk
Allow leading whitespace in expressions. Closes #38. Thanks to Christian Boos for the patch!
author | cmlenz |
---|---|
date | Wed, 23 Aug 2006 15:00:28 +0000 |
parents | 769d945ac030 |
children | b64e36bc1100 |
comparison
equal
deleted
inserted
replaced
190:769d945ac030 | 191:3289055a8c32 |
---|---|
851 @param offset: the column number at which the text starts in the source | 851 @param offset: the column number at which the text starts in the source |
852 (optional) | 852 (optional) |
853 """ | 853 """ |
854 def _interpolate(text, patterns, filename=filename, lineno=lineno, | 854 def _interpolate(text, patterns, filename=filename, lineno=lineno, |
855 offset=offset): | 855 offset=offset): |
856 for idx, group in enumerate(patterns.pop(0).split(text)): | 856 for idx, grp in enumerate(patterns.pop(0).split(text)): |
857 if idx % 2: | 857 if idx % 2: |
858 try: | 858 try: |
859 yield EXPR, Expression(group, filename, lineno), \ | 859 yield EXPR, Expression(grp.strip(), filename, lineno), \ |
860 (filename, lineno, offset) | 860 (filename, lineno, offset) |
861 except SyntaxError, err: | 861 except SyntaxError, err: |
862 raise TemplateSyntaxError(err, filename, lineno, | 862 raise TemplateSyntaxError(err, filename, lineno, |
863 offset + (err.offset or 0)) | 863 offset + (err.offset or 0)) |
864 elif group: | 864 elif grp: |
865 if patterns: | 865 if patterns: |
866 for result in _interpolate(group, patterns[:]): | 866 for result in _interpolate(grp, patterns[:]): |
867 yield result | 867 yield result |
868 else: | 868 else: |
869 yield TEXT, group.replace('$$', '$'), \ | 869 yield TEXT, grp.replace('$$', '$'), \ |
870 (filename, lineno, offset) | 870 (filename, lineno, offset) |
871 if '\n' in group: | 871 if '\n' in grp: |
872 lines = group.splitlines() | 872 lines = grp.splitlines() |
873 lineno += len(lines) - 1 | 873 lineno += len(lines) - 1 |
874 offset += len(lines[-1]) | 874 offset += len(lines[-1]) |
875 else: | 875 else: |
876 offset += len(group) | 876 offset += len(grp) |
877 return _interpolate(text, [cls._FULL_EXPR_RE, cls._SHORT_EXPR_RE]) | 877 return _interpolate(text, [cls._FULL_EXPR_RE, cls._SHORT_EXPR_RE]) |
878 _interpolate = classmethod(_interpolate) | 878 _interpolate = classmethod(_interpolate) |
879 | 879 |
880 def generate(self, *args, **kwargs): | 880 def generate(self, *args, **kwargs): |
881 """Apply the template to the given context data. | 881 """Apply the template to the given context data. |