Skip to content
This repository has been archived by the owner on Mar 8, 2018. It is now read-only.

Commit

Permalink
improved handling of target lists in #set directive
Browse files Browse the repository at this point in the history
  • Loading branch information
tavis_rudd committed Jan 5, 2006
1 parent 51b304c commit 54620d4
Showing 1 changed file with 24 additions and 10 deletions.
34 changes: 24 additions & 10 deletions src/Parser.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python
# $Id: Parser.py,v 1.95 2006/01/05 19:13:24 tavis_rudd Exp $
# $Id: Parser.py,v 1.96 2006/01/05 19:41:01 tavis_rudd Exp $
"""Parser classes for Cheetah's Compiler
Classes:
Expand All @@ -11,12 +11,12 @@
Meta-Data
================================================================================
Author: Tavis Rudd <tavis@damnsimple.com>
Version: $Revision: 1.95 $
Version: $Revision: 1.96 $
Start Date: 2001/08/01
Last Revision Date: $Date: 2006/01/05 19:13:24 $
Last Revision Date: $Date: 2006/01/05 19:41:01 $
"""
__author__ = "Tavis Rudd <tavis@damnsimple.com>"
__revision__ = "$Revision: 1.95 $"[11:-2]
__revision__ = "$Revision: 1.96 $"[11:-2]

import os
import sys
Expand All @@ -31,6 +31,8 @@
from Cheetah import Filters
from Cheetah import ErrorCatchers

class Unspecified: pass

# re tools
def escapeRegexChars(txt,
escapeRE=re.compile(r'([\$\^\*\+\.\?\{\}\[\]\(\)\|\\])')):
Expand Down Expand Up @@ -905,14 +907,19 @@ def getDefArgList(self, exitPos=None, useNameMapper=False):
def getExpressionParts(self,
enclosed=False,
enclosures=None, # list of tuples (char, pos), where char is ({ or [
pyTokensToBreakAt=None
pyTokensToBreakAt=None,
useNameMapper=Unspecified,
):

""" Get a Cheetah expression that includes $CheetahVars and break at
directive end tokens, the end of an enclosure, or at a specified
pyToken.
"""

if useNameMapper is not Unspecified:
useNameMapper_orig = self.setting('useNameMapper')
self.setSetting('useNameMapper', useNameMapper)

if enclosures is None:
enclosures = []

Expand Down Expand Up @@ -1001,18 +1008,23 @@ def getExpressionParts(self,
if not self.atEnd() and self.peek() == '(':
exprBits.append(self.getCallArgString())
##
if useNameMapper is not Unspecified:
self.setSetting('useNameMapper', useNameMapper_orig) # @@TR: see comment above
return exprBits

def getExpression(self,
enclosed=False,
enclosures=None, # list of tuples (char, pos), where # char is ({ or [
pyTokensToBreakAt=None
pyTokensToBreakAt=None,
useNameMapper=Unspecified,
):
"""Returns the output of self.getExpressionParts() as a concatenated
string rather than as a list.
"""
return ''.join(self.getExpressionParts(enclosed=enclosed, enclosures=enclosures,
pyTokensToBreakAt=pyTokensToBreakAt))
return ''.join(self.getExpressionParts(
enclosed=enclosed, enclosures=enclosures,
pyTokensToBreakAt=pyTokensToBreakAt,
useNameMapper=useNameMapper))


def transformToken(self, token, beforeTokenPos):
Expand Down Expand Up @@ -1796,8 +1808,10 @@ def eatSet(self):
# @@TR: this needs expanding to handle (i,j) = list style assignments
startsWithDollar = self.matchCheetahVarStart()
startPos = self.pos()
LVALUE = self.getCheetahVar(plain=True, skipStartToken=(not startsWithDollar))

#LVALUE = self.getCheetahVar(plain=True, skipStartToken=(not startsWithDollar))
LVALUE = self.getExpression(pyTokensToBreakAt=assignmentOps, useNameMapper=False)
LVALUE = LVALUE.strip()

self.getWhiteSpace()
OP = self.getAssignmentOperator()
RVALUE = self.getExpression()
Expand Down

0 comments on commit 54620d4

Please sign in to comment.