Line-tree parses indented lines of text and returns an array of the represented tree structure.
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
MIT-LICENSE
README.md
gem-public_cert.pem
line-tree.gemspec

README.md

#Introducing the line-tree gem

The line-tree gem is designed to parse lines of text, with each line being parsed as separate text fields which can be represented as an array.

If the line is indented then it's treated as a nested array of the line above.

require 'line-tree'

lines =<<LINES
a
  b 123
  bike 456
LINES


LineTree.new(lines).to_a
#=> [["a", ["b 123"], ["bike 456"]]]

XML

puts LineTree.new(lines).to_xml

output:

<?xml version='1.0' encoding='UTF-8'?>
<a><b>123</b><bike>456</bike></a>

If you want the XML to use attributes, write the attributes as a hash after the element name e.g.

bike {colour: 'red'} 456