xpath/trunk/XMLv2__XPathNodePositionComparator.st
changeset 0 5057afe1ec87
equal deleted inserted replaced
-1:000000000000 0:5057afe1ec87
       
     1 "{ Package: 'stx:goodies/xmlsuite/xpath' }"
       
     2 
       
     3 "{ NameSpace: XMLv2 }"
       
     4 
       
     5 Object subclass:#XPathNodePositionComparator
       
     6 	instanceVariableNames:'documentAdaptor'
       
     7 	classVariableNames:''
       
     8 	poolDictionaries:''
       
     9 	category:'XML Suite-XPath'
       
    10 !
       
    11 
       
    12 
       
    13 !XPathNodePositionComparator methodsFor:'accessing'!
       
    14 
       
    15 documentAdaptor:anXPathDocumentAdaptor
       
    16     documentAdaptor := anXPathDocumentAdaptor.
       
    17 
       
    18     "Created: / 13-10-2006 / 19:52:50 / janfrog"
       
    19 ! !
       
    20 
       
    21 !XPathNodePositionComparator methodsFor:'block mimicry'!
       
    22 
       
    23 numArgs
       
    24 
       
    25     ^2
       
    26 
       
    27     "Created: / 13-10-2006 / 19:54:38 / janfrog"
       
    28 ! !
       
    29 
       
    30 !XPathNodePositionComparator methodsFor:'evaluation'!
       
    31 
       
    32 value: a value: b
       
    33 
       
    34     | aPos bPos |
       
    35 
       
    36     aPos := documentAdaptor xpathPositionVectorOf: a.
       
    37     bPos := documentAdaptor xpathPositionVectorOf: b.
       
    38 
       
    39     1 to: (aPos elementPosition size min:bPos elementPosition size) do:
       
    40         [:i|
       
    41         (aPos elementPosition at:i) < (bPos elementPosition at:i) ifTrue:[^true].
       
    42         (aPos elementPosition at:i) > (bPos elementPosition at:i) ifTrue:[^false]].
       
    43 
       
    44     (aPos elementPosition size) < (bPos elementPosition size) ifTrue:[^true].
       
    45     (aPos elementPosition size) > (bPos elementPosition size) ifTrue:[^false].
       
    46 
       
    47     1 to: (aPos attributePosition size min:bPos attributePosition size) do:
       
    48         [:i|
       
    49         (aPos attributePosition at:i) < (bPos attributePosition at:i) ifTrue:[^true].
       
    50         (aPos attributePosition at:i) > (bPos attributePosition at:i) ifTrue:[^false]].
       
    51 
       
    52     (aPos attributePosition size) < (bPos attributePosition size) ifTrue:[^true].
       
    53     (aPos attributePosition size) > (bPos attributePosition size) ifTrue:[^false].
       
    54 
       
    55     ^false
       
    56 
       
    57     "Created: / 13-10-2006 / 19:50:59 / janfrog"
       
    58 ! !
       
    59 
       
    60 !XPathNodePositionComparator class methodsFor:'documentation'!
       
    61 
       
    62 version
       
    63     ^ '$Header: /opt/data/cvs/stx/goodies/xmlsuite/xpath/XMLv2__XPathNodePositionComparator.st,v 1.1 2006-10-14 05:41:53 vranyj1 Exp $'
       
    64 ! !