class DependencyBuilder
Attributes
to_s[R]
Public Class Methods
new(s)
click to toggle source
# File lib/dependency_builder.rb, line 17 def initialize(s) a = LineTree.new(s).to_a items = a.flatten.uniq h = Hash[items.zip([[]] * items.length)] a.each do |x| head, *tail = x # check each child tail.flatten.each {|x2| h[x2] += [head] } end # reject items without dependencies h2 = h.reject {|k,v| v.empty?} h2.keys.each do |item| key, _ = h2.find {|x| x[-1].grep(item).any? } next unless h2[key] index = h2[key].index item next unless index h2[key][index] = {item => h2[item]} h2.delete item end @to_s = treeize(h2) end
Private Instance Methods
treeize(obj, indent=0)
click to toggle source
# File lib/dependency_builder.rb, line 54 def treeize(obj, indent=0) case obj when Hash i = indent + 1 obj.map {|k,v| ' ' * indent + k + "\n" + treeize(v, i.clone)}.join("\n") when Array obj.map {|x| treeize(x, indent)}.join("\n") else ' ' * indent + obj end end