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

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