1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
########################################################################
#
# File Name: ParsedPattern.py
#
#
"""
Parse class to handle base XSLT patterns
WWW: http://4suite.com/4XSLT e-mail: support@4suite.com
Copyright (c) 1999-2000 Fourthought Inc, USA. All Rights Reserved.
See http://4suite.com/COPYRIGHT for license and copyright information
"""
import sys
from xml.xpath import ParsedToken
from xml.xslt import XsltException, Error
class ParsedPattern(ParsedToken.ParsedToken):
def __init__(self, pattern):
ParsedToken.ParsedToken.__init__(self, 'PATTERN')
self._patterns = [pattern]
self._shortcuts = [pattern.getShortcut()]
def append(self,pattern):
self._patterns.append(pattern)
self._shortcuts.append(pattern.getShortcut())
def match(self, context, node):
for pattern,axis_type in self._shortcuts:
if pattern.match(context, node, axis_type):
return 1
return 0
def getMatchShortcuts(self):
return map(lambda a, b: (a, b), self._patterns, self._shortcuts)
def pprint(self, indent=''):
print indent + str(self)
for pattern in self._patterns:
pattern.pprint(indent + ' ')
def __str__(self):
return '<Pattern at %x: %s>' % (id(self), repr(self))
def __repr__(self):
rt = repr(self._patterns[0])
for pattern in self._patterns[1:]:
rt = rt + ' | ' + repr(pattern)
return rt
|