rexle 0.9.46 → 0.9.47
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.
- data/lib/rexle.rb +19 -16
- metadata +2 -2
data/lib/rexle.rb
CHANGED
@@ -10,6 +10,8 @@ require 'cgi'
|
|
10
10
|
include REXML
|
11
11
|
|
12
12
|
# modifications:
|
13
|
+
# 10-Sep-2012: bug fix: Removed code from method pretty_print in order to
|
14
|
+
# get the XML displayed properly
|
13
15
|
# 23-Aug-2012: feature: implemented xpath function contains()
|
14
16
|
# 17-Aug-2012: bug fix: pretty print now ignores text containing empty space
|
15
17
|
# 16-Aug-2012: the current element's text (if its not empty) is now returned
|
@@ -31,19 +33,12 @@ include REXML
|
|
31
33
|
# 14-Jan-2012: Implemented Rexle::Elements#each
|
32
34
|
# 21-Dec-2011: Bug fix: xpath modified to allow querying from the actual
|
33
35
|
# root rather than the 1st child element from the root
|
34
|
-
|
35
|
-
# * is used.
|
36
|
-
# 03-Sep-2011: Implemented deep_clone as well as modifying clone to function
|
37
|
-
# similar to REXML.
|
38
|
-
# 28-Au-2011: New line characters between elements are now preserved
|
39
|
-
# 24-Jul-2011: Smybols are used for attribute keys instead of strings now
|
40
|
-
# 18-Jun-2011: A Rexle document can now be added to another Rexle document
|
41
|
-
# e.g. Rexle.new('<root/>').add Rexle.new "<a>123</a>"
|
36
|
+
|
42
37
|
module XMLhelper
|
43
38
|
|
44
39
|
def doc_print(children)
|
45
40
|
|
46
|
-
body = children.empty? ? '' : scan_print(children).join
|
41
|
+
body = (children.empty? or children.is_an_empty_string? ) ? '' : scan_print(children).join
|
47
42
|
a = self.root.attributes.to_a.map{|k,v| "%s='%s'" % [k,v]}
|
48
43
|
"<%s%s>%s</%s>" % [self.root.name, a.empty? ? '' : ' ' + a.join(' '), body, self.root.name]
|
49
44
|
end
|
@@ -65,7 +60,7 @@ module XMLhelper
|
|
65
60
|
a = x.attributes.to_a.map{|k,v| "%s='%s'" % [k,v]}
|
66
61
|
tag = x.name + (a.empty? ? '' : ' ' + a.join(' '))
|
67
62
|
|
68
|
-
if x.value.length > 0 or x.children.length > 0 then
|
63
|
+
if x.value.length > 0 or (x.children.length > 0 and not x.children.is_an_empty_string?) then
|
69
64
|
out = ["<%s>" % tag]
|
70
65
|
#out << x.value unless x.value.nil? || x.value.empty?
|
71
66
|
out << scan_print(x.children)
|
@@ -87,10 +82,13 @@ module XMLhelper
|
|
87
82
|
|
88
83
|
def pretty_print(nodes, indent='0')
|
89
84
|
indent = indent.to_i
|
85
|
+
|
90
86
|
nodes.select(){|x| x.is_a? Rexle::Element or x.strip.length > 0}
|
91
87
|
.map.with_index do |x, i|
|
88
|
+
|
92
89
|
if x.is_a? Rexle::Element then
|
93
90
|
unless x.name == '![' then
|
91
|
+
#return ["<%s/>" % x.name] if x.value = ''
|
94
92
|
a = x.attributes.to_a.map{|k,v| "%s='%s'" % [k,v]}
|
95
93
|
a ||= []
|
96
94
|
tag = x.name + (a.empty? ? '' : ' ' + a.join(' '))
|
@@ -172,9 +170,7 @@ class Rexle
|
|
172
170
|
|
173
171
|
def contains(raw_args)
|
174
172
|
path, raw_val = raw_args.split(',',2)
|
175
|
-
val = raw_val.strip[/^["']?.*["']?$/]
|
176
|
-
|
177
|
-
puts 'path : ' + path.inspect
|
173
|
+
val = raw_val.strip[/^["']?.*["']?$/]
|
178
174
|
|
179
175
|
anode = query_xpath(path)
|
180
176
|
return unless anode
|
@@ -424,11 +420,18 @@ class Rexle
|
|
424
420
|
|
425
421
|
def attributes() @attributes end
|
426
422
|
|
427
|
-
def children()
|
428
|
-
|
423
|
+
def children()
|
424
|
+
|
425
|
+
r = (@value.empty? ? [] : [@value]) + @child_elements
|
426
|
+
def r.is_an_empty_string?()
|
427
|
+
self.length == 1 and self.first == ''
|
428
|
+
end
|
429
|
+
|
430
|
+
return r
|
429
431
|
end
|
430
432
|
|
431
|
-
def children=(a)
|
433
|
+
def children=(a) @child_elements = a end
|
434
|
+
|
432
435
|
def deep_clone() Rexle.new(self.xml).root end
|
433
436
|
def clone() Element.new(@name, @value, @attributes) end
|
434
437
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: rexle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.9.
|
5
|
+
version: 0.9.47
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- James Robertson
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-10-07 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rexleparser
|