diff options
author | R. Tyler Ballance <tyler@slide.com> | 2009-04-16 22:32:41 -0700 |
---|---|---|
committer | R. Tyler Ballance <tyler@slide.com> | 2009-04-16 22:32:41 -0700 |
commit | 45f570f03abfbe929a14a7c23e2aa2a39ce152c5 (patch) | |
tree | 992e83fd05db4ab0231ec1a2257ba45b744376c5 /src/Parser.py | |
parent | 2fc2c598e3ab45631739fe0f582fbfc18573b417 (diff) | |
parent | 1c42c232c419001116a099e4a49032231fff38fe (diff) | |
download | python-cheetah-2.1.1.tar.gz |
Merge branch 'next' of git@github.com:rtyler/cheetahv2.1.1
Diffstat (limited to 'src/Parser.py')
-rw-r--r-- | src/Parser.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/Parser.py b/src/Parser.py index 4e9e4db..0b8097f 100644 --- a/src/Parser.py +++ b/src/Parser.py @@ -172,6 +172,7 @@ directiveNamesAndParsers = { 'filter': 'eatFilter', 'echo': None, 'silent': None, + 'transform' : 'eatTransform', 'call': 'eatCall', 'arg': 'eatCallArg', @@ -2473,6 +2474,30 @@ class _HighLevelParser(_LowLevelParser): self.pushToOpenDirectivesStack("filter") self._eatRestOfDirectiveTag(isLineClearToStartToken, endOfFirstLinePos) self._compiler.setFilter(theFilter, isKlass) + + def eatTransform(self): + isLineClearToStartToken = self.isLineClearToStartToken() + endOfFirstLinePos = self.findEOL() + + self.getDirectiveStartToken() + self.advance(len('transform')) + self.getWhiteSpace() + startPos = self.pos() + if self.matchCheetahVarStart(): + isKlass = True + transformer = self.getExpression(pyTokensToBreakAt=[':']) + else: + isKlass = False + transformer = self.getIdentifier() + self.getWhiteSpace() + transformer = self._applyExpressionFilters(transformer, 'transform', startPos=startPos) + + if self.peek()==':': + self.advance() + self.getWhiteSpace() + self._eatRestOfDirectiveTag(isLineClearToStartToken, endOfFirstLinePos) + self._compiler.setTransform(transformer, isKlass) + def eatErrorCatcher(self): isLineClearToStartToken = self.isLineClearToStartToken() |