Sha256: f748f36092b541c9c22e807a8862c531ec37f7e121ba9f49662c90aeda1064d0

Contents?: true

Size: 817 Bytes

Versions: 3

Compression:

Stored size: 817 Bytes

Contents

module Lapidarius
  class Tree
    CURVED = "└── "
    EMPTY = "    "
    NESTED = "├── "
    STRAIGHT = "│   "

    def initialize(gem)
      @gem = gem
      @out = []
    end

    def out
      return @out unless @out.empty?
      @out.tap do |out|
        out << @gem
        recurse
        out << ""
        out << "#{@gem.count} runtime, #{@gem.dev_count} development"
      end
    end

    private def recurse(gem = @gem, prefix = "")
      last_index = gem.size - 1
      gem.each_with_index do |dep, i|
        pointer, preadd = branches(i == last_index)
        @out << "#{prefix}#{pointer}#{dep}"
        recurse(dep, "#{prefix}#{preadd}") if dep.size > 0
      end
    end
    
    private def branches(last)
      return [CURVED, EMPTY] if last
      [NESTED, STRAIGHT]
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lapidarius-3.3.0 lib/lapidarius/tree.rb
lapidarius-3.2.1 lib/lapidarius/tree.rb
lapidarius-3.2.0 lib/lapidarius/tree.rb