Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(242)

Unified Diff: third_party/twisted_8_1/twisted/words/xish/xpath.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/twisted_8_1/twisted/words/xish/xpath.py
diff --git a/third_party/twisted_8_1/twisted/words/xish/xpath.py b/third_party/twisted_8_1/twisted/words/xish/xpath.py
deleted file mode 100644
index 9505c38d932b30e82ee587f71c28006dd0bc0286..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/words/xish/xpath.py
+++ /dev/null
@@ -1,333 +0,0 @@
-# -*- test-case-name: twisted.words.test.test_xpath -*-
-#
-# Copyright (c) 2001-2007 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-"""
-XPath query support.
-
-This module provides L{XPathQuery} to match
-L{domish.Element<twisted.words.xish.domish.Element>} instances against
-XPath-like expressions.
-"""
-
-try:
- import cStringIO as StringIO
-except ImportError:
- import StringIO
-
-class LiteralValue(str):
- def value(self, elem):
- return self
-
-
-class IndexValue:
- def __init__(self, index):
- self.index = int(index) - 1
-
- def value(self, elem):
- return elem.children[self.index]
-
-
-class AttribValue:
- def __init__(self, attribname):
- self.attribname = attribname
- if self.attribname == "xmlns":
- self.value = self.value_ns
-
- def value_ns(self, elem):
- return elem.uri
-
- def value(self, elem):
- if self.attribname in elem.attributes:
- return elem.attributes[self.attribname]
- else:
- return None
-
-
-class CompareValue:
- def __init__(self, lhs, op, rhs):
- self.lhs = lhs
- self.rhs = rhs
- if op == "=":
- self.value = self._compareEqual
- else:
- self.value = self._compareNotEqual
-
- def _compareEqual(self, elem):
- return self.lhs.value(elem) == self.rhs.value(elem)
-
- def _compareNotEqual(self, elem):
- return self.lhs.value(elem) != self.rhs.value(elem)
-
-
-class BooleanValue:
- """
- Provide boolean XPath expression operators.
-
- @ivar lhs: Left hand side expression of the operator.
- @ivar op: The operator. One of C{'and'}, C{'or'}.
- @ivar rhs: Right hand side expression of the operator.
- @ivar value: Reference to the method that will calculate the value of
- this expression given an element.
- """
- def __init__(self, lhs, op, rhs):
- self.lhs = lhs
- self.rhs = rhs
- if op == "and":
- self.value = self._booleanAnd
- else:
- self.value = self._booleanOr
-
- def _booleanAnd(self, elem):
- """
- Calculate boolean and of the given expressions given an element.
-
- @param elem: The element to calculate the value of the expression from.
- """
- return self.lhs.value(elem) and self.rhs.value(elem)
-
- def _booleanOr(self, elem):
- """
- Calculate boolean or of the given expressions given an element.
-
- @param elem: The element to calculate the value of the expression from.
- """
- return self.lhs.value(elem) or self.rhs.value(elem)
-
-
-def Function(fname):
- """
- Internal method which selects the function object
- """
- klassname = "_%s_Function" % fname
- c = globals()[klassname]()
- return c
-
-
-class _not_Function:
- def __init__(self):
- self.baseValue = None
-
- def setParams(self, baseValue):
- self.baseValue = baseValue
-
- def value(self, elem):
- return not self.baseValue.value(elem)
-
-
-class _text_Function:
- def setParams(self):
- pass
-
- def value(self, elem):
- return str(elem)
-
-
-class _Location:
- def __init__(self):
- self.predicates = []
- self.elementName = None
- self.childLocation = None
-
- def matchesPredicates(self, elem):
- if self.elementName != None and self.elementName != elem.name:
- return 0
-
- for p in self.predicates:
- if not p.value(elem):
- return 0
-
- return 1
-
- def matches(self, elem):
- if not self.matchesPredicates(elem):
- return 0
-
- if self.childLocation != None:
- for c in elem.elements():
- if self.childLocation.matches(c):
- return 1
- else:
- return 1
-
- return 0
-
- def queryForString(self, elem, resultbuf):
- if not self.matchesPredicates(elem):
- return
-
- if self.childLocation != None:
- for c in elem.elements():
- self.childLocation.queryForString(c, resultbuf)
- else:
- resultbuf.write(str(elem))
-
- def queryForNodes(self, elem, resultlist):
- if not self.matchesPredicates(elem):
- return
-
- if self.childLocation != None:
- for c in elem.elements():
- self.childLocation.queryForNodes(c, resultlist)
- else:
- resultlist.append(elem)
-
- def queryForStringList(self, elem, resultlist):
- if not self.matchesPredicates(elem):
- return
-
- if self.childLocation != None:
- for c in elem.elements():
- self.childLocation.queryForStringList(c, resultlist)
- else:
- for c in elem.children:
- if isinstance(c, (str, unicode)):
- resultlist.append(c)
-
-
-class _AnyLocation:
- def __init__(self):
- self.predicates = []
- self.elementName = None
- self.childLocation = None
-
- def matchesPredicates(self, elem):
- for p in self.predicates:
- if not p.value(elem):
- return 0
- return 1
-
- def listParents(self, elem, parentlist):
- if elem.parent != None:
- self.listParents(elem.parent, parentlist)
- parentlist.append(elem.name)
-
- def isRootMatch(self, elem):
- if (self.elementName == None or self.elementName == elem.name) and \
- self.matchesPredicates(elem):
- if self.childLocation != None:
- for c in elem.elements():
- if self.childLocation.matches(c):
- return True
- else:
- return True
- return False
-
- def findFirstRootMatch(self, elem):
- if (self.elementName == None or self.elementName == elem.name) and \
- self.matchesPredicates(elem):
- # Thus far, the name matches and the predicates match,
- # now check into the children and find the first one
- # that matches the rest of the structure
- # the rest of the structure
- if self.childLocation != None:
- for c in elem.elements():
- if self.childLocation.matches(c):
- return c
- return None
- else:
- # No children locations; this is a match!
- return elem
- else:
- # Ok, predicates or name didn't match, so we need to start
- # down each child and treat it as the root and try
- # again
- for c in elem.elements():
- if self.matches(c):
- return c
- # No children matched...
- return None
-
- def matches(self, elem):
- if self.isRootMatch(elem):
- return True
- else:
- # Ok, initial element isn't an exact match, walk
- # down each child and treat it as the root and try
- # again
- for c in elem.elements():
- if self.matches(c):
- return True
- # No children matched...
- return False
-
- def queryForString(self, elem, resultbuf):
- raise NotImplementedError(
- "queryForString is not implemented for any location")
-
- def queryForNodes(self, elem, resultlist):
- # First check to see if _this_ element is a root
- if self.isRootMatch(elem):
- resultlist.append(elem)
-
- # Now check each child
- for c in elem.elements():
- self.queryForNodes(c, resultlist)
-
-
- def queryForStringList(self, elem, resultlist):
- if self.isRootMatch(elem):
- for c in elem.children:
- if isinstance(c, (str, unicode)):
- resultlist.append(c)
- for c in elem.elements():
- self.queryForStringList(c, resultlist)
-
-
-class XPathQuery:
- def __init__(self, queryStr):
- self.queryStr = queryStr
- from twisted.words.xish.xpathparser import parse
- self.baseLocation = parse('XPATH', queryStr)
-
- def __hash__(self):
- return self.queryStr.__hash__()
-
- def matches(self, elem):
- return self.baseLocation.matches(elem)
-
- def queryForString(self, elem):
- result = StringIO.StringIO()
- self.baseLocation.queryForString(elem, result)
- return result.getvalue()
-
- def queryForNodes(self, elem):
- result = []
- self.baseLocation.queryForNodes(elem, result)
- if len(result) == 0:
- return None
- else:
- return result
-
- def queryForStringList(self, elem):
- result = []
- self.baseLocation.queryForStringList(elem, result)
- if len(result) == 0:
- return None
- else:
- return result
-
-
-__internedQueries = {}
-
-def internQuery(queryString):
- if queryString not in __internedQueries:
- __internedQueries[queryString] = XPathQuery(queryString)
- return __internedQueries[queryString]
-
-
-def matches(xpathstr, elem):
- return internQuery(xpathstr).matches(elem)
-
-
-def queryForStringList(xpathstr, elem):
- return internQuery(xpathstr).queryForStringList(elem)
-
-
-def queryForString(xpathstr, elem):
- return internQuery(xpathstr).queryForString(elem)
-
-
-def queryForNodes(xpathstr, elem):
- return internQuery(xpathstr).queryForNodes(elem)
« no previous file with comments | « third_party/twisted_8_1/twisted/words/xish/xmlstream.py ('k') | third_party/twisted_8_1/twisted/words/xish/xpathparser.g » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698