rexle 0.9.44 → 0.9.45

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/rexle.rb +13 -11
  2. metadata +2 -2
@@ -10,6 +10,7 @@ require 'cgi'
10
10
  include REXML
11
11
 
12
12
  # modifications:
13
+ # 17-Aug-2012: bug fix: pretty print now ignores text containing empty space
13
14
  # 16-Aug-2012: the current element's text (if its not empty) is now returned
14
15
  # from its children method
15
16
  # 15-Aug-2012: feature: xpath containing child:: now supported
@@ -43,15 +44,15 @@ module XMLhelper
43
44
 
44
45
  body = children.empty? ? '' : scan_print(children).join
45
46
  a = self.root.attributes.to_a.map{|k,v| "%s='%s'" % [k,v]}
46
- "<%s%s>%s</%s>" % [self.root.name, a.empty? ? '' : ' ' + a.join(' '), self.root.text + body, self.root.name]
47
+ "<%s%s>%s</%s>" % [self.root.name, a.empty? ? '' : ' ' + a.join(' '), body, self.root.name]
47
48
  end
48
49
 
49
50
  def doc_pretty_print(children)
50
51
 
51
- body = children.empty? ? self.value : pretty_print(children,2).join
52
+ body = pretty_print(children,2).join
52
53
  a = self.root.attributes.to_a.map{|k,v| "%s='%s'" % [k,v]}
53
54
  ind = "\n "
54
- "<%s%s>%s%s%s</%s>" % [self.root.name, a.empty? ? '' : ' ' + a.join(' '), ind, self.root.text + body, "\n", self.root.name]
55
+ "<%s%s>%s%s%s</%s>" % [self.root.name, a.empty? ? '' : ' ' + a.join(' '), ind, body, "\n", self.root.name]
55
56
  end
56
57
 
57
58
  def scan_print(nodes)
@@ -65,7 +66,7 @@ module XMLhelper
65
66
 
66
67
  if x.value.length > 0 or x.children.length > 0 then
67
68
  out = ["<%s>" % tag]
68
- out << x.value unless x.value.nil? || x.value.empty?
69
+ #out << x.value unless x.value.nil? || x.value.empty?
69
70
  out << scan_print(x.children)
70
71
  out << "</%s>" % x.name
71
72
  else
@@ -85,20 +86,21 @@ module XMLhelper
85
86
 
86
87
  def pretty_print(nodes, indent='0')
87
88
  indent = indent.to_i
88
- nodes.map.with_index do |x, i|
89
+ nodes.select(){|x| x.is_a? Rexle::Element or x.strip.length > 0}
90
+ .map.with_index do |x, i|
89
91
  if x.is_a? Rexle::Element then
90
92
  unless x.name == '![' then
91
93
  a = x.attributes.to_a.map{|k,v| "%s='%s'" % [k,v]}
92
94
  a ||= []
93
95
  tag = x.name + (a.empty? ? '' : ' ' + a.join(' '))
94
96
 
95
- ind1 = x.children.length > 0 ? ("\n" + ' ' * indent) : ''
96
- start = i > 0 ? ("\n" + ' ' * (indent - 1)) : ''
97
+ start = i > 0 ? ("\n" + ' ' * (indent - 1)) : ''
98
+ ind1 = x.children.grep(Rexle::Element).length > 0 ?
99
+ ("\n" + ' ' * indent) : ''
97
100
  out = ["%s<%s>%s" % [start, tag, ind1]]
98
101
 
99
- out << x.value.sub(/^[\n\s]+$/,'') unless x.value.nil? || x.value.empty?
100
102
  out << pretty_print(x.children, (indent + 1).to_s.clone)
101
- ind2 = x.children.length > 0 ? ("\n" + ' ' * (indent - 1)) : ''
103
+ ind2 = ind1.length > 0 ? ("\n" + ' ' * (indent - 1)) : ''
102
104
  out << "%s</%s>" % [ind2, x.name]
103
105
  else
104
106
  "<![CDATA[%s]]>" % x.value
@@ -719,7 +721,7 @@ class Rexle
719
721
  def scan_element(name, value=nil, attributes=nil, *children)
720
722
 
721
723
  element = Element.new(name, value, attributes, self)
722
- puts 'children : ' + children.inspect
724
+
723
725
  if children then
724
726
  children.each do |x|
725
727
  if x.is_a? Array then
@@ -741,4 +743,4 @@ class Rexle
741
743
  [node.name, node.text.to_s, attributes, *children]
742
744
  end
743
745
 
744
- end
746
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: rexle
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.9.44
5
+ version: 0.9.45
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-08-16 00:00:00 Z
13
+ date: 2012-08-17 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rexleparser