rexle 0.8.1 → 0.8.2
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 +43 -5
- metadata +2 -2
data/lib/rexle.rb
CHANGED
@@ -393,10 +393,8 @@ class Rexle
|
|
393
393
|
|
394
394
|
def xml(options={})
|
395
395
|
o = {pretty: false}.merge(options)
|
396
|
-
|
397
|
-
|
398
|
-
out = "<%s%s>%s</%s>" % [self.root.name, a.empty? ? '' : ' ' + a.join(' '), body, self.root.name]
|
399
|
-
o[:pretty] == false ? out : (PrettyXML::write out)
|
396
|
+
msg = o[:pretty] == false ? :doc_print : :doc_pretty_print
|
397
|
+
"<?xml version='1.0' encoding='UTF-8'?>\n" + method(msg).call(self.root.children)
|
400
398
|
end
|
401
399
|
|
402
400
|
private
|
@@ -430,6 +428,24 @@ class Rexle
|
|
430
428
|
return element
|
431
429
|
end
|
432
430
|
|
431
|
+
def doc_print(children)
|
432
|
+
|
433
|
+
body = scan_print(children).join
|
434
|
+
a = self.root.attributes.to_a.map{|k,v| "%s='%s'" % [k,v]}
|
435
|
+
"<%s%s>%s</%s>" % [self.root.name, a.empty? ? '' : ' ' + a.join(' '), body, self.root.name]
|
436
|
+
end
|
437
|
+
|
438
|
+
|
439
|
+
def doc_pretty_print(children)
|
440
|
+
|
441
|
+
body = pretty_print(children,2).join
|
442
|
+
a = self.root.attributes.to_a.map{|k,v| "%s='%s'" % [k,v]}
|
443
|
+
ind = "\n "
|
444
|
+
"<%s%s>%s%s%s</%s>" % [self.root.name, a.empty? ? '' : ' ' + a.join(' '), ind, body, "\n", self.root.name]
|
445
|
+
end
|
446
|
+
|
447
|
+
|
448
|
+
|
433
449
|
def scan_print(nodes)
|
434
450
|
|
435
451
|
nodes.map do |x|
|
@@ -448,6 +464,28 @@ class Rexle
|
|
448
464
|
|
449
465
|
end
|
450
466
|
|
467
|
+
def pretty_print(nodes, indent='0')
|
468
|
+
indent = indent.to_i
|
469
|
+
nodes.map.with_index do |x, i|
|
470
|
+
unless x.name == '![' then
|
471
|
+
a = x.attributes.to_a.map{|k,v| "%s='%s'" % [k,v]}
|
472
|
+
tag = x.name + (a.empty? ? '' : ' ' + a.join(' '))
|
473
|
+
|
474
|
+
ind1 = x.children.length > 0 ? ("\n" + ' ' * indent) : ''
|
475
|
+
start = i > 0 ? ("\n" + ' ' * (indent - 1)) : ''
|
476
|
+
out = ["%s<%s>%s" % [start, tag, ind1]]
|
477
|
+
|
478
|
+
out << x.value.sub(/^[\n\s]+$/,'') unless x.value.nil? || x.value.empty?
|
479
|
+
out << pretty_print(x.children, (indent + 2).to_s.clone)
|
480
|
+
ind2 = x.children.length > 0 ? ("\n" + ' ' * (indent - 1)) : ''
|
481
|
+
out << "%s</%s>" % [ind2, x.name]
|
482
|
+
else
|
483
|
+
"<![CDATA[%s]]>" % x.value
|
484
|
+
end
|
485
|
+
end
|
486
|
+
|
487
|
+
end
|
488
|
+
|
451
489
|
def count(path) @doc.xpath(path).flatten.compact.length end
|
452
490
|
def max(path) @doc.xpath(path).map(&:to_i).max end
|
453
491
|
|
@@ -459,4 +497,4 @@ class Rexle
|
|
459
497
|
[node.name, node.text.to_s, attributes, *children]
|
460
498
|
end
|
461
499
|
|
462
|
-
end
|
500
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rexle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors: []
|
7
7
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2011-01-
|
12
|
+
date: 2011-01-12 00:00:00 +00:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|