/usr/lib64/python2.6/site-packages/Cheetah
NameSizeModeActions
Macros/-0755rm
Templates/-0755rm
Tests/-0755rm
Tools/-0755rm
Utils/-0755rm
CacheRegion.py44210644editdlrm
CacheRegion.pyc66360644editdlrm
CacheRegion.pyo65930644editdlrm
CacheStore.py30470644editdlrm
CacheStore.pyc58750644editdlrm
CacheStore.pyo58750644editdlrm
CheetahWrapper.py238850644editdlrm
CheetahWrapper.pyc229580644editdlrm
CheetahWrapper.pyo228950644editdlrm
Compiler.py802840644editdlrm
Compiler.pyc767540644editdlrm
Compiler.pyo766800644editdlrm
convertTmplPathToModuleName.py4960644editdlrm
convertTmplPathToModuleName.pyc7060644editdlrm
convertTmplPathToModuleName.pyo7060644editdlrm
DirectiveAnalyzer.py24450644editdlrm
DirectiveAnalyzer.pyc40430644editdlrm
DirectiveAnalyzer.pyo40430644editdlrm
Django.py5920644editdlrm
Django.pyc9450644editdlrm
Django.pyo9450644editdlrm
DummyTransaction.py32770644editdlrm
DummyTransaction.pyc56720644editdlrm
DummyTransaction.pyo56720644editdlrm
ErrorCatchers.py17550644editdlrm
ErrorCatchers.pyc36100644editdlrm
ErrorCatchers.pyo36100644editdlrm
FileUtils.py106640644editdlrm
FileUtils.pyc134550644editdlrm
FileUtils.pyo134550644editdlrm
Filters.py76390644editdlrm
Filters.pyc86750644editdlrm
Filters.pyo86750644editdlrm
ImportHooks.py44760644editdlrm
ImportHooks.pyc43680644editdlrm
ImportHooks.pyo43680644editdlrm
ImportManager.py175470644editdlrm
ImportManager.pyc172840644editdlrm
ImportManager.pyo172840644editdlrm
NameMapper.py130930644editdlrm
NameMapper.pyc141610644editdlrm
NameMapper.pyo141610644editdlrm
Parser.py1035990644editdlrm
Parser.pyc814660644editdlrm
Parser.pyo812770644editdlrm
Servlet.py34060644editdlrm
Servlet.pyc38840644editdlrm
Servlet.pyo38840644editdlrm
SettingsManager.py103610644editdlrm
SettingsManager.pyc118110644editdlrm
SettingsManager.pyo118110644editdlrm
SourceReader.py90590644editdlrm
SourceReader.pyc119640644editdlrm
SourceReader.pyo119640644editdlrm
Template.py847470644editdlrm
Template.pyc684040644editdlrm
Template.pyo683200644editdlrm
TemplateCmdLineIface.py33110644editdlrm
TemplateCmdLineIface.pyc39860644editdlrm
TemplateCmdLineIface.pyo39860644editdlrm
Unspecified.py2580644editdlrm
Unspecified.pyc8090644editdlrm
Unspecified.pyo8090644editdlrm
Version.py15400644editdlrm
Version.pyc18670644editdlrm
Version.pyo12990644editdlrm
_namemapper.so135760644editdlrm
__init__.py5820644editdlrm
__init__.pyc7560644editdlrm
__init__.pyo7560644editdlrm
Edit: /usr/lib64/python2.6/site-packages/Cheetah/SourceReader.py (9059B)
"""SourceReader class for Cheetah's Parser and CodeGenerator """ import re import sys EOLre = re.compile(r'[ \f\t]*(?:\r\n|\r|\n)') EOLZre = re.compile(r'(?:\r\n|\r|\n|\Z)') ENCODINGsearch = re.compile("coding[=:]\s*([-\w.]+)").search class Error(Exception): pass class SourceReader(object): def __init__(self, src, filename=None, breakPoint=None, encoding=None): ## @@TR 2005-01-17: the following comes from a patch Terrel Shumway ## contributed to add unicode support to the reading of Cheetah source ## files with dynamically compiled templates. All the existing unit ## tests pass but, it needs more testing and some test cases of its ## own. My instinct is to move this up into the code that passes in the ## src string rather than leaving it here. As implemented here it ## forces all src strings to unicode, which IMO is not what we want. # if encoding is None: # # peek at the encoding in the first two lines # m = EOLZre.search(src) # pos = m.end() # if pos= self._BOLs[i] and pos <= self._EOLs[i]: return i def getRowCol(self, pos=None): if pos == None: pos = self._pos lineNum = self.lineNum(pos) BOL, EOL = self._BOLs[lineNum], self._EOLs[lineNum] return lineNum+1, pos-BOL+1 def getRowColLine(self, pos=None): if pos == None: pos = self._pos row, col = self.getRowCol(pos) return row, col, self.splitlines()[row-1] def getLine(self, pos): if pos == None: pos = self._pos lineNum = self.lineNum(pos) return self.splitlines()[lineNum] def pos(self): return self._pos def setPos(self, pos): self.checkPos(pos) self._pos = pos def validPos(self, pos): return pos <= self._breakPoint and pos >=0 def checkPos(self, pos): if not pos <= self._breakPoint: raise Error("pos (" + str(pos) + ") is invalid: beyond the stream's end (" + str(self._breakPoint-1) + ")" ) elif not pos >=0: raise Error("pos (" + str(pos) + ") is invalid: less than 0" ) def breakPoint(self): return self._breakPoint def setBreakPoint(self, pos): if pos > self._srcLen: raise Error("New breakpoint (" + str(pos) + ") is invalid: beyond the end of stream's source string (" + str(self._srcLen) + ")" ) elif not pos >= 0: raise Error("New breakpoint (" + str(pos) + ") is invalid: less than 0" ) self._breakPoint = pos def setBookmark(self, name): self._bookmarks[name] = self._pos self._posTobookmarkMap[self._pos] = name def hasBookmark(self, name): return name in self._bookmarks def gotoBookmark(self, name): if not self.hasBookmark(name): raise Error("Invalid bookmark (" + name + ") is invalid: does not exist") pos = self._bookmarks[name] if not self.validPos(pos): raise Error("Invalid bookmark (" + name + ', '+ str(pos) + ") is invalid: pos is out of range" ) self._pos = pos def atEnd(self): return self._pos >= self._breakPoint def atStart(self): return self._pos == 0 def peek(self, offset=0): self.checkPos(self._pos+offset) pos = self._pos + offset return self._src[pos] def getc(self): pos = self._pos if self.validPos(pos+1): self._pos += 1 return self._src[pos] def ungetc(self, c=None): if not self.atStart(): raise Error('Already at beginning of stream') self._pos -= 1 if not c==None: self._src[self._pos] = c def advance(self, offset=1): self.checkPos(self._pos + offset) self._pos += offset def rev(self, offset=1): self.checkPos(self._pos - offset) self._pos -= offset def read(self, offset): self.checkPos(self._pos + offset) start = self._pos self._pos += offset return self._src[start:self._pos] def readTo(self, to, start=None): self.checkPos(to) if start == None: start = self._pos self._pos = to return self._src[start:to] def readToEOL(self, start=None, gobble=True): EOLmatch = EOLZre.search(self.src(), self.pos()) if gobble: pos = EOLmatch.end() else: pos = EOLmatch.start() return self.readTo(to=pos, start=start) def find(self, it, pos=None): if pos == None: pos = self._pos return self._src.find(it, pos ) def startswith(self, it, pos=None): if self.find(it, pos) == self.pos(): return True else: return False def rfind(self, it, pos): if pos == None: pos = self._pos return self._src.rfind(it, pos) def findBOL(self, pos=None): if pos == None: pos = self._pos src = self.src() return max(src.rfind('\n', 0, pos)+1, src.rfind('\r', 0, pos)+1, 0) def findEOL(self, pos=None, gobble=False): if pos == None: pos = self._pos match = EOLZre.search(self.src(), pos) if gobble: return match.end() else: return match.start() def isLineClearToPos(self, pos=None): if pos == None: pos = self.pos() self.checkPos(pos) src = self.src() BOL = self.findBOL() return BOL == pos or src[BOL:pos].isspace() def matches(self, strOrRE): if isinstance(strOrRE, (str, unicode)): return self.startswith(strOrRE, pos=self.pos()) else: # assume an re object return strOrRE.match(self.src(), self.pos()) def matchWhiteSpace(self, WSchars=' \f\t'): return (not self.atEnd()) and self.peek() in WSchars def getWhiteSpace(self, max=None, WSchars=' \f\t'): if not self.matchWhiteSpace(WSchars): return '' start = self.pos() breakPoint = self.breakPoint() if max is not None: breakPoint = min(breakPoint, self.pos()+max) while self.pos() < breakPoint: self.advance() if not self.matchWhiteSpace(WSchars): break return self.src()[start:self.pos()] def matchNonWhiteSpace(self, WSchars=' \f\t\n\r'): return self.atEnd() or not self.peek() in WSchars def getNonWhiteSpace(self, WSchars=' \f\t\n\r'): if not self.matchNonWhiteSpace(WSchars): return '' start = self.pos() while self.pos() < self.breakPoint(): self.advance() if not self.matchNonWhiteSpace(WSchars): break return self.src()[start:self.pos()]