summaryrefslogtreecommitdiff
path: root/src/Parser.py
diff options
context:
space:
mode:
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()