piotrmurach/tty-tree

View on GitHub
lib/tty/tree/number_renderer.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module TTY
  class Tree
    # Render nodes as numbered list
    class NumberRenderer
      def initialize(nodes, options = {})
        @indent = options.fetch(:indent, 4)
        @nodes = nodes
        @mark = ' ' * @indent
      end

      def render
        @nodes.each_with_index.reduce([]) do |acc, (node, i)|
          render_node(acc, node, i, @mark)
        end.join
      end

      private

      def render_node(acc, node, i, mark)
        acc << node.prefix.gsub(/:pipe|:space/, mark)
        unless node.root?
          acc << "#{node.level}.#{i} "
        end
        acc << node.name.to_s + "\n"
      end
    end # NumberRenderer
  end # Tree
end # TTY