Module: TreeView
- Defined in:
- lib/treeview.rb,
lib/treeview/version.rb
Constant Summary collapse
- HASH_CLASS =
{}.class
- ARRAY_CLASS =
[].class
- VERSION =
"0.0.1"
- @@END_BRANCH =
'\\__'
- @@BRANCH =
'|__'
- @@SPACE =
' '
Class Method Summary collapse
- .finally(tree) ⇒ Object
- .parse(source, nest = 0) ⇒ Object
- .tree(source) ⇒ Object
- .write_branch(pos, last, nest) ⇒ Object
Class Method Details
.finally(tree) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/treeview.rb', line 15 def self.finally(tree) tree = tree.split("\n").map!(&:chars) (0..(tree.length-1)).each do |y| next if y == tree.length tree[y].each.with_index do |ch,i| if ch == '|' && tree[y+1][i] == ' ' tree[y+1][i] = '|' end end end tree.map!{|e|e.join('')} tree.join("\n") end |
.parse(source, nest = 0) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/treeview.rb', line 29 def self.parse(source,nest = 0) str = '' if [HASH_CLASS,ARRAY_CLASS].include?(source.class) len = source.length end if source.class == HASH_CLASS source.each.with_index(1) do |(k,v) ,i| str << k.to_s + "\n" str << parse(v,nest) end elsif source.class == ARRAY_CLASS nest += 1 source.each.with_index(1) do |v,i| str << write_branch(i,len,nest) str << parse(v, nest) end else str << source.to_s + "\n" end str end |
.tree(source) ⇒ Object
53 54 55 |
# File 'lib/treeview.rb', line 53 def self.tree(source) finally(parse(source)) end |
.write_branch(pos, last, nest) ⇒ Object
11 12 13 |
# File 'lib/treeview.rb', line 11 def self.write_branch(pos,last,nest) @@SPACE * (nest - 1) + (pos != last ? @@BRANCH : @@END_BRANCH) end |