rexle 0.9.34 → 0.9.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/rexle.rb +12 -5
  2. metadata +1 -1
@@ -27,6 +27,7 @@ include REXML
27
27
  # 24-Jul-2011: Smybols are used for attribute keys instead of strings now
28
28
  # 18-Jun-2011: A Rexle document can now be added to another Rexle document
29
29
  # e.g. Rexle.new('<root/>').add Rexle.new "<a>123</a>"
30
+ s
30
31
  module XMLhelper
31
32
 
32
33
  def doc_print(children)
@@ -286,8 +287,14 @@ class Rexle
286
287
  return_elements = []
287
288
 
288
289
  if raw_path[0,2] == '//' then
290
+
291
+ regex = /\[(\d+)\]/
292
+ n = xpath_value[regex,1]
293
+ xpath_value.slice!(regex)
294
+
289
295
  rs = scan_match(self, xpath_value).flatten.compact
290
- return rs
296
+ return n ? rs[n.to_i-1] : rs
297
+
291
298
  elsif (raw_path == '.' or raw_path == self.name) and attr_search.nil? then
292
299
  return [self]
293
300
  else
@@ -299,7 +306,6 @@ class Rexle
299
306
 
300
307
  end
301
308
 
302
-
303
309
  if return_elements.length > 0 then
304
310
 
305
311
  if (a_path + [remaining_path]).join.empty? then
@@ -387,7 +393,7 @@ class Rexle
387
393
  def attribute(key)
388
394
  key = key.to_sym if key.is_a? String
389
395
  @attributes[key].gsub('&lt;','<').gsub('&gt;','>')
390
- end
396
+ end
391
397
 
392
398
  def attributes() @attributes end
393
399
  def children() @child_elements end
@@ -470,12 +476,13 @@ class Rexle
470
476
 
471
477
  def format_condition(condition)
472
478
 
473
- raw_items = condition[1..-1].scan(/\'[^\']*\'|\"[^\"]*\"|and|or|\d+|[!=<>]+|position\(\)|[@\w\.\/]+/)
479
+ raw_items = condition[1..-1].scan(/\'[^\']*\'|\"[^\"]*\"|and|or|\d+|[!=<>]+|position\(\)|[@\w\.\/&;]+/)
474
480
 
475
481
  if raw_items[0][/^\d+$/] then
476
482
  return raw_items[0].to_i
477
483
  elsif raw_items[0] == 'position()' then
478
- return "i %s %s" % raw_items[1..-1]
484
+ rrr = "i %s %s" % raw_items[1].gsub('&lt;','<').gsub('&gt;','>'), raw_items[-1]]
485
+ return rrr
479
486
  else
480
487
 
481
488
  andor_items = raw_items.map.with_index.select{|x,i| x[/\band\b|\bor\b/]}.map{|x| [x.last, x.last + 1]}.flatten
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: rexle
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.9.34
5
+ version: 0.9.35
6
6
  platform: ruby
7
7
  authors:
8
8
  - James Robertson