File: ParsedPattern.py

package info (click to toggle)
python-xml 0.8.4-10.1%2Blenny1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 4,972 kB
  • ctags: 10,628
  • sloc: python: 46,730; ansic: 14,354; xml: 968; makefile: 201; sh: 20
file content (49 lines) | stat: -rw-r--r-- 1,502 bytes parent folder | download | duplicates (3)
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