diff options
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() |