Viewing file: ParsedAbbreviatedAbsoluteLocationPath.py (1.65 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
######################################################################## # $Header: /var/local/cvsroot/4Suite/Ft/Xml/XPath/ParsedAbbreviatedAbsoluteLocationPath.py,v 1.7 2005/03/07 02:25:58 mbrown Exp $ """ A parsed token that represents an abbreviated absolute location path.
Copyright 2005 Fourthought, Inc. (USA). Detailed license and copyright information: http://4suite.org/COPYRIGHT Project home, documentation, distributions: http://4suite.org/ """
from xml.dom import Node from Ft.Lib.Set import Unique
class ParsedAbbreviatedAbsoluteLocationPath: def __init__(self, rel): self._rel = rel return
def _descendants(self, context, nodeset): for child in context.node.childNodes: context.node = child results = self._rel.select(context) # Ensure no duplicates if results: nodeset.extend(results) nodeset = Unique(nodeset) if child.nodeType == Node.ELEMENT_NODE: nodeset = self._descendants(context, nodeset) return nodeset
def evaluate(self, context): state = context.copy()
# Start at the document node context.node = context.node.rootNode
nodeset = self._descendants(context, self._rel.select(context))
context.set(state) return nodeset select = evaluate
def pprint(self, indent=''): print indent + str(self) self._rel.pprint(indent + ' ')
def __str__(self): return '<AbbreviatedAbsoluteLocationPath at %x: %s>' % ( id(self), repr(self) )
def __repr__(self): return '//%r' % self._rel
|