xquery/XQuery__XPathNameTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 02 Jul 2018 08:46:01 +0200
changeset 305 bad21c4f64bf
parent 296 ea3dbc023c80
permissions -rw-r--r--
Tagged Smalltalk/X 8.0.0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
241
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/xmlsuite/xquery' }"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: XQuery }"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
XPathNodeTest subclass:#XPathNameTest
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:'localName prefix'
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'XQuery-AST-XPath'
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
!XPathNameTest methodsFor:'accessing'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
localName
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
    ^ localName
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    "Created: / 14-11-2007 / 18:04:02 / janfrog"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
localName:something
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
    localName := something.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
    "Created: / 14-11-2007 / 18:04:02 / janfrog"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
namespaceURI
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
    ^prefix
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
    "Created: / 21-11-2007 / 13:42:25 / janfrog"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
prefix
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
    ^ prefix
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
    "Created: / 14-11-2007 / 18:04:02 / janfrog"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
prefix:something
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
    prefix := something.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
    "Created: / 14-11-2007 / 18:04:02 / janfrog"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
qName: aString
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    | nodeName |
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
    nodeName := XMLv2::NodeName fromString: aString.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    nodeName prefix isNilOrEmptyCollection 
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
        ifFalse:[prefix := nodeName prefix].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
    localName := nodeName localName
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    "Created: / 17-11-2007 / 14:13:23 / janfrog"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
    "Modified: / 17-11-2007 / 15:27:01 / janfrog"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
! !
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
!XPathNameTest methodsFor:'filtering'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
filterNodeSet:aNodeSet 
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
    | da|
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
    da := aNodeSet documentAdaptor.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    ^aNodeSet select:
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
        [:each|
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
        ((da xpathIsElement:each) or:[da xpathIsAttribute:each]) and:
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
            [(prefix == #all or:[prefix = (da xpathNamespaceOf:each)]) and:
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
                [localName == #all or:[localName = (da xpathLocalNameOf: each)]]]]
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    "Modified: / 15-11-2007 / 21:52:21 / janfrog"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
! !
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
!XPathNameTest methodsFor:'printing'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
printOn: stream
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
    (prefix = '*' and:[localName = '*']) ifTrue:[^stream nextPut:$*].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    prefix ifNotNil:
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
        [stream nextPutAll: prefix; nextPut:$:].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    stream nextPutAll: localName
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    "Created: / 15-11-2007 / 22:07:20 / janfrog"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    "Modified: / 18-11-2007 / 09:05:51 / janfrog"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
! !
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
!XPathNameTest methodsFor:'testing'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
isXPathNameTest
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    ^ true
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
    "Created: / 21-11-2007 / 11:06:23 / janfrog"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
! !
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
!XPathNameTest methodsFor:'visiting'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
acceptVisitor:aVisitor 
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    "Double dispatch back to the visitor, passing my type encoded in
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
     the selector (visitor pattern)"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
    "stub code automatically generated - please change if required"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
    ^ aVisitor visitXPathNameTest:self
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
    "Created: / 17-11-2007 / 15:31:52 / janfrog"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
! !
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
!XPathNameTest class methodsFor:'documentation'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
version_SVN
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
    ^ '$Id$'
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
! !