line-tree 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/line-tree.rb +18 -0
- metadata +1 -1
data/lib/line-tree.rb
CHANGED
@@ -15,6 +15,14 @@ class LineTree
|
|
15
15
|
@a
|
16
16
|
end
|
17
17
|
|
18
|
+
def to_xml()
|
19
|
+
d = REXML::Formatters::Default.new
|
20
|
+
doc = Document.new '<root/>'
|
21
|
+
scan_line doc.root, @a
|
22
|
+
d.write(XPath.first(doc.root, '*'), out='')
|
23
|
+
out
|
24
|
+
end
|
25
|
+
|
18
26
|
private
|
19
27
|
|
20
28
|
def build_tree(a, new_a, prev_indent, history=[])
|
@@ -51,4 +59,14 @@ class LineTree
|
|
51
59
|
return [cur_indent, x]
|
52
60
|
end
|
53
61
|
end
|
62
|
+
|
63
|
+
def scan_line(node, a)
|
64
|
+
a.each do |x|
|
65
|
+
name, text = x.shift.compact
|
66
|
+
element = Element.new(name.gsub(/^[^a-zA-Z][^a-zA-Z0-9]?/,'')).add_text text
|
67
|
+
scan_line(element, x) unless x.empty?
|
68
|
+
node.add element
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
54
72
|
end
|