Sha256: c9a03df513c84beddecee0c14fb6a0317b46402a9588c0267c8ad7b275939d3d

Contents?: true

Size: 818 Bytes

Versions: 2

Compression:

Stored size: 818 Bytes

Contents

require "ostruct"

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 dependencies"
      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

2 entries across 2 versions & 1 rubygems

Version Path
lapidarius-3.1.1 lib/lapidarius/tree.rb
lapidarius-3.1.0 lib/lapidarius/tree.rb