rexle-xpath 0.2.18 → 0.2.19
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/rexle-xpath.rb +27 -6
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6830597770b873aa7b054e23d48deac4df7f203
|
4
|
+
data.tar.gz: 0b4b8f7dd040ee4a6d875c75690e02b75f5fd647
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b827b5c398cb520dc0cdd27810504f696a1dbc0ce87caec856a329323004847c06d4af8734f6cc637826fe3a36a3a1daf3a91517f731cb68ba230ac9973df48
|
7
|
+
data.tar.gz: 27c6d89519ee72af78975f69426e18edddcc682b97c36318296d040b4126fcf27b2790f066e7399c022e6f615269bcc338d2e1a0deaccb4561d7f1e6d0be1652
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/rexle-xpath.rb
CHANGED
@@ -42,7 +42,6 @@ class RexleXPath
|
|
42
42
|
else
|
43
43
|
|
44
44
|
xpath_instructions = RexleXPathParser.new(s).to_a
|
45
|
-
#puts 'xpath_instructions: ' + xpath_instructions.inspect
|
46
45
|
|
47
46
|
query xpath_instructions, @node
|
48
47
|
end
|
@@ -56,7 +55,11 @@ class RexleXPath
|
|
56
55
|
row = xpath_instructions.shift
|
57
56
|
method_name, *args = row
|
58
57
|
|
59
|
-
return query
|
58
|
+
return query xpath_instructions, node if row == :|
|
59
|
+
|
60
|
+
if row.is_a? Array and row.first.is_a? Array then
|
61
|
+
return query row + xpath_instructions, node
|
62
|
+
end
|
60
63
|
|
61
64
|
result = if method_name == :predicate then
|
62
65
|
|
@@ -70,7 +73,8 @@ class RexleXPath
|
|
70
73
|
|
71
74
|
else
|
72
75
|
|
73
|
-
method(method_name.to_sym).call node, args, xpath_instructions
|
76
|
+
r3 = method(method_name.to_sym).call node, args, xpath_instructions
|
77
|
+
r3
|
74
78
|
end
|
75
79
|
|
76
80
|
result.is_a?(Array) ? result.flatten : result
|
@@ -171,17 +175,18 @@ class RexleXPath
|
|
171
175
|
return nodes_found[i]
|
172
176
|
|
173
177
|
end
|
174
|
-
|
178
|
+
|
175
179
|
if xpath_instructions.any? and nodes_found.any? then
|
176
180
|
|
177
181
|
nodes_found.inject([]) do |r, child_node|
|
178
182
|
|
179
183
|
# deep clone the xpath instructions
|
180
184
|
xi = xpath_instructions.deep_clone
|
185
|
+
operand = xi.shift if xi.first == :|
|
181
186
|
|
182
187
|
r2 = query(xi, child_node)
|
183
188
|
|
184
|
-
case r2.class.to_s.to_sym
|
189
|
+
r3 = case r2.class.to_s.to_sym
|
185
190
|
when :'Rexle::Element' then r << r2
|
186
191
|
when :TrueClass
|
187
192
|
predicate ? r << child_node : r << true
|
@@ -192,11 +197,27 @@ class RexleXPath
|
|
192
197
|
when :NilClass
|
193
198
|
r
|
194
199
|
else
|
195
|
-
r2.any? ? r << r2 : r
|
200
|
+
r2.any? ? r << r2 : r #<< child_node
|
196
201
|
end # /case
|
197
202
|
|
203
|
+
if operand == :| then
|
204
|
+
nodes_found + r3
|
205
|
+
else
|
206
|
+
r3
|
207
|
+
end
|
208
|
+
|
198
209
|
end # /inject
|
199
210
|
|
211
|
+
elsif xpath_instructions.any? and nodes_found.empty?
|
212
|
+
|
213
|
+
operator = xpath_instructions.shift
|
214
|
+
|
215
|
+
if operator == :| then
|
216
|
+
query xpath_instructions, node
|
217
|
+
else
|
218
|
+
nodes_found
|
219
|
+
end
|
220
|
+
|
200
221
|
else
|
201
222
|
nodes_found
|
202
223
|
end # /if
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rexle-xpath
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -31,7 +31,7 @@ cert_chain:
|
|
31
31
|
nbFbbz3OsHrrR6h7FB5a8wQzCvYMtAr9VMPNl01QqBRi2wCEr6hR3gGBY0T1ZT5P
|
32
32
|
qYzPWuECaMhR5w==
|
33
33
|
-----END CERTIFICATE-----
|
34
|
-
date: 2016-
|
34
|
+
date: 2016-07-09 00:00:00.000000000 Z
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rexle-xpath-parser
|
metadata.gz.sig
CHANGED
Binary file
|