oga 1.2.2 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/oga/version.rb +1 -1
- data/lib/oga/xml/node_set.rb +52 -13
- data/lib/oga/xpath/evaluator.rb +3 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0884bc981b96ff1504e09e5c100c5b63dbf5f912
|
4
|
+
data.tar.gz: e0bcfded6267dc24bd995a32541537f8f6766566
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61ea4f71bc78a2162671b255091dd6568c36485925e334db8a23a88a45ba43437c78c718ab23c95b659251dd7adf5ffbc1dacf37c03cb07af075f4a64f676196
|
7
|
+
data.tar.gz: 97c97b8d8ab767236547d9ca4998ea3ad62d4d06ee22ca34d4248791d28e0ca51ee5dabfd76c188de1ad8d9647af8d24b60b364d05b0cac53bf74d8bda5efd62
|
data/lib/oga/version.rb
CHANGED
data/lib/oga/xml/node_set.rb
CHANGED
@@ -42,10 +42,15 @@ module Oga
|
|
42
42
|
# @param [Oga::XML::NodeSet] owner The owner of the set.
|
43
43
|
#
|
44
44
|
def initialize(nodes = [], owner = nil)
|
45
|
-
@nodes
|
46
|
-
@owner
|
45
|
+
@nodes = nodes
|
46
|
+
@owner = owner
|
47
|
+
@existing = {}
|
47
48
|
|
48
|
-
@nodes.each
|
49
|
+
@nodes.each do |node|
|
50
|
+
mark_existing(node)
|
51
|
+
|
52
|
+
take_ownership(node) if @owner
|
53
|
+
end
|
49
54
|
end
|
50
55
|
|
51
56
|
##
|
@@ -103,11 +108,13 @@ module Oga
|
|
103
108
|
# @param [Oga::XML::Node] node
|
104
109
|
#
|
105
110
|
def push(node)
|
106
|
-
return if
|
111
|
+
return if exists?(node)
|
107
112
|
|
108
113
|
@nodes << node
|
109
114
|
|
110
|
-
|
115
|
+
mark_existing(node)
|
116
|
+
|
117
|
+
take_ownership(node) if @owner
|
111
118
|
end
|
112
119
|
|
113
120
|
alias_method :<<, :push
|
@@ -118,11 +125,13 @@ module Oga
|
|
118
125
|
# @param [Oga::XML::Node] node
|
119
126
|
#
|
120
127
|
def unshift(node)
|
121
|
-
return if
|
128
|
+
return if exists?(node)
|
122
129
|
|
123
130
|
@nodes.unshift(node)
|
124
131
|
|
125
|
-
|
132
|
+
mark_existing(node)
|
133
|
+
|
134
|
+
take_ownership(node) if @owner
|
126
135
|
end
|
127
136
|
|
128
137
|
##
|
@@ -133,7 +142,11 @@ module Oga
|
|
133
142
|
def shift
|
134
143
|
node = @nodes.shift
|
135
144
|
|
136
|
-
|
145
|
+
if node
|
146
|
+
unmark_existing(node)
|
147
|
+
|
148
|
+
remove_ownership(node) if @owner
|
149
|
+
end
|
137
150
|
|
138
151
|
node
|
139
152
|
end
|
@@ -146,7 +159,11 @@ module Oga
|
|
146
159
|
def pop
|
147
160
|
node = @nodes.pop
|
148
161
|
|
149
|
-
|
162
|
+
if node
|
163
|
+
unmark_existing(node)
|
164
|
+
|
165
|
+
remove_ownership(node) if @owner
|
166
|
+
end
|
150
167
|
|
151
168
|
node
|
152
169
|
end
|
@@ -158,11 +175,13 @@ module Oga
|
|
158
175
|
# @param [Oga::XML::Node] node
|
159
176
|
#
|
160
177
|
def insert(index, node)
|
161
|
-
return if
|
178
|
+
return if exists?(node)
|
162
179
|
|
163
180
|
@nodes.insert(index, node)
|
164
181
|
|
165
|
-
|
182
|
+
mark_existing(node)
|
183
|
+
|
184
|
+
take_ownership(node) if @owner
|
166
185
|
end
|
167
186
|
|
168
187
|
##
|
@@ -257,7 +276,11 @@ module Oga
|
|
257
276
|
def delete(node)
|
258
277
|
removed = @nodes.delete(node)
|
259
278
|
|
260
|
-
|
279
|
+
if removed
|
280
|
+
unmark_existing(removed)
|
281
|
+
|
282
|
+
remove_ownership(removed) if @owner
|
283
|
+
end
|
261
284
|
|
262
285
|
removed
|
263
286
|
end
|
@@ -317,7 +340,7 @@ module Oga
|
|
317
340
|
# @param [Oga::XML::Node] node
|
318
341
|
#
|
319
342
|
def take_ownership(node)
|
320
|
-
node.node_set = self
|
343
|
+
node.node_set = self
|
321
344
|
end
|
322
345
|
|
323
346
|
##
|
@@ -328,6 +351,22 @@ module Oga
|
|
328
351
|
def remove_ownership(node)
|
329
352
|
node.node_set = nil if node.node_set == self
|
330
353
|
end
|
354
|
+
|
355
|
+
# @param [Oga::XML::Node|Oga::XML::Attribute] node
|
356
|
+
# @return [TrueClass|FalseClass]
|
357
|
+
def exists?(node)
|
358
|
+
@existing.key?(node)
|
359
|
+
end
|
360
|
+
|
361
|
+
# @param [Oga::XML::Node|Oga::XML::Attribute] node
|
362
|
+
def mark_existing(node)
|
363
|
+
@existing[node] = true
|
364
|
+
end
|
365
|
+
|
366
|
+
# @param [Oga::XML::Node|Oga::XML::Attribute] node
|
367
|
+
def unmark_existing(node)
|
368
|
+
@existing.delete(node)
|
369
|
+
end
|
331
370
|
end # NodeSet
|
332
371
|
end # XML
|
333
372
|
end # Oga
|
data/lib/oga/xpath/evaluator.rb
CHANGED
@@ -1691,7 +1691,9 @@ module Oga
|
|
1691
1691
|
def name_matches?(xml_node, name)
|
1692
1692
|
return false unless xml_node.respond_to?(:name)
|
1693
1693
|
|
1694
|
-
|
1694
|
+
return true if name == STAR
|
1695
|
+
|
1696
|
+
xml_node.name == name || xml_node.name.casecmp(name) == 0
|
1695
1697
|
end
|
1696
1698
|
|
1697
1699
|
##
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oga
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yorick Peterse
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ast
|
@@ -219,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
219
219
|
version: '0'
|
220
220
|
requirements: []
|
221
221
|
rubyforge_project:
|
222
|
-
rubygems_version: 2.4.
|
222
|
+
rubygems_version: 2.4.8
|
223
223
|
signing_key:
|
224
224
|
specification_version: 4
|
225
225
|
summary: Oga is an XML/HTML parser written in Ruby.
|