summaryrefslogtreecommitdiff
path: root/src/Parser.py
diff options
context:
space:
mode:
authorR. Tyler Ballance <tyler@slide.com>2009-04-16 22:32:41 -0700
committerR. Tyler Ballance <tyler@slide.com>2009-04-16 22:32:41 -0700
commit45f570f03abfbe929a14a7c23e2aa2a39ce152c5 (patch)
tree992e83fd05db4ab0231ec1a2257ba45b744376c5 /src/Parser.py
parent2fc2c598e3ab45631739fe0f582fbfc18573b417 (diff)
parent1c42c232c419001116a099e4a49032231fff38fe (diff)
downloadpython-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.py25
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()