Sha256: 40aeeb5aaad470aab42a8f763699a4e8fd8a1e13bc30c98bcb09a962d9c40200
Contents?: true
Size: 1.27 KB
Versions: 2
Compression:
Stored size: 1.27 KB
Contents
# frozen_string_literal: true require "stringio" module CobraCommander module Output # Prints the tree in a nice tree form class AsciiTree SPACE = " " BAR = "│ " TEE = "├── " CORNER = "└── " def initialize(component) @component = component end def to_s StringIO.new.tap do |io| io.puts @component.name list_dependencies(io, @component) end.string end private def list_dependencies(io, component, outdents = []) component.dependencies.each do |dep| decide_on_line(io, component, dep, outdents) end nil end def decide_on_line(io, parent, dep, outdents) if parent.dependencies.last == dep add_corner(io, outdents, dep) else add_tee(io, outdents, dep) end end def add_tee(io, outdents, dep) io.puts line(outdents, TEE, dep.name) list_dependencies(io, dep, (outdents + [BAR])) end def add_corner(io, outdents, dep) io.puts line(outdents, CORNER, dep.name) list_dependencies(io, dep, (outdents + [SPACE])) end def line(outdents, sym, name) (outdents + [sym] + [name]).join end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
cobra_commander-0.15.1 | lib/cobra_commander/output/ascii_tree.rb |
cobra_commander-0.15.0 | lib/cobra_commander/output/ascii_tree.rb |