trunk/XMLv2__NamedNodeMap.st
changeset 0 5057afe1ec87
equal deleted inserted replaced
-1:000000000000 0:5057afe1ec87
       
     1 "{ Package: 'stx:goodies/xmlsuite' }"
       
     2 
       
     3 "{ NameSpace: XMLv2 }"
       
     4 
       
     5 NodeList subclass:#NamedNodeMap
       
     6 	instanceVariableNames:''
       
     7 	classVariableNames:''
       
     8 	poolDictionaries:''
       
     9 	category:'XML Suite-DOM3'
       
    10 !
       
    11 
       
    12 
       
    13 !NamedNodeMap methodsFor:'DOM3 interface'!
       
    14 
       
    15 getNamedItem:name
       
    16 
       
    17     ^self 
       
    18         detect:[:i| name = i localName "defined in Node"]
       
    19         ifNone:[nil]
       
    20 
       
    21     "Created: / 11-05-2005 / 19:18:32 / janfrog"
       
    22 !
       
    23 
       
    24 getNamedItem:name ns:ns
       
    25 
       
    26     ^self 
       
    27         detect:[:i| (name = i localName) "defined in Node"
       
    28                         and:[ns = i namespaceURI]] "defined in Node"
       
    29         ifNone:[nil]
       
    30 
       
    31     "Created: / 11-05-2005 / 19:24:18 / janfrog"
       
    32 !
       
    33 
       
    34 removeNamedItem:name
       
    35 
       
    36     | oldItem |
       
    37     oldItem := self getNamedItem:name.
       
    38     oldItem ifNotNil:[
       
    39         self remove:oldItem
       
    40     ]
       
    41 
       
    42     "Created: / 11-05-2005 / 19:22:34 / janfrog"
       
    43 !
       
    44 
       
    45 removeNamedItem:name ns:ns
       
    46 
       
    47     | oldItem |
       
    48     oldItem := self getNamedItem:name ns:ns.
       
    49     oldItem ifNotNil:[
       
    50         self remove:oldItem
       
    51     ]
       
    52 
       
    53     "Created: / 11-05-2005 / 19:22:57 / janfrog"
       
    54 !
       
    55 
       
    56 setNamedItem:node
       
    57 
       
    58     | oldItem |
       
    59     oldItem := self getNamedItem:node localName.
       
    60     oldItem ifNotNil:[
       
    61         self at:(self identityIndexOf:oldItem) put:node
       
    62     ] ifNil:[
       
    63         self add:node
       
    64     ]
       
    65 
       
    66     "Created: / 11-05-2005 / 19:21:34 / janfrog"
       
    67 !
       
    68 
       
    69 setNamedItem:node ns:ns
       
    70 
       
    71     | oldItem |
       
    72     oldItem := self getNamedItem:node localName ns:node namespaceURI.
       
    73     oldItem ifNotNil:[
       
    74         self at:(self identityIndexOf:oldItem) put:node
       
    75     ] ifNil:[
       
    76         self add:node
       
    77     ]
       
    78 
       
    79     "Created: / 11-05-2005 / 19:23:34 / janfrog"
       
    80 ! !
       
    81 
       
    82 !NamedNodeMap methodsFor:'DOM3 interface - extensions'!
       
    83 
       
    84 getQualifiedNamedItem:name
       
    85 
       
    86     ^self 
       
    87         detect:[:i| (name = i qualifiedName) ] "defined in Node"
       
    88         ifNone:[nil]
       
    89 
       
    90     "Created: / 25-10-2005 / 17:07:06 / janfrog"
       
    91 ! !
       
    92 
       
    93 !NamedNodeMap methodsFor:'comparing'!
       
    94 
       
    95 = anotherNamedNodeMap
       
    96     ^ super = anotherNamedNodeMap.
       
    97 
       
    98     "| s a |
       
    99     s := self. reject: [:x| x = nil].
       
   100     a := anotherNamedNodeMap. reject: [:x | x = nil] "
       
   101     "Simple but not effective"
       
   102     "^anotherNamedNodeMap isCollection
       
   103         and:[s contentsArray = a contentsArray]"
       
   104 
       
   105     "Created: / 18-06-2005 / 19:59:07 / janfrog"
       
   106     "Modified: / 10-10-2006 / 15:10:14 / janfrog"
       
   107 !
       
   108 
       
   109 hash
       
   110 
       
   111     ^self inject:97 into:[:hash :node|hash bitXor:node hash]
       
   112 
       
   113     "Created: / 18-06-2005 / 19:58:05 / janfrog"
       
   114 ! !
       
   115 
       
   116 !NamedNodeMap class methodsFor:'documentation'!
       
   117 
       
   118 version
       
   119     ^ '$Header: /opt/data/cvs/stx/goodies/xmlsuite/XMLv2__NamedNodeMap.st,v 1.3 2007-01-10 17:47:03 stillj1 Exp $'
       
   120 ! !