Class: Coltrane::Renderers::TextRenderer::ArrayDrawer

Inherits:
BaseDrawer
  • Object
show all
Defined in:
lib/coltrane/renderers/text_renderer/array_drawer.rb

Instance Attribute Summary

Attributes inherited from BaseDrawer

#flavor, #layout, #model, #options, #per_row

Instance Method Summary collapse

Methods inherited from BaseDrawer

#initialize

Constructor Details

This class inherits a constructor from Coltrane::Renderers::TextRenderer::BaseDrawer

Instance Method Details

#renderObject



7
8
9
# File 'lib/coltrane/renderers/text_renderer/array_drawer.rb', line 7

def render
  public_send("render_#{layout}")
end

#render_horizontalObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/coltrane/renderers/text_renderer/array_drawer.rb', line 19

def render_horizontal
  array
  .each_slice(per_row)
  .map { |row|
    row
    .map { |element|
      TextRenderer.render(element, **options)
      .split("\n")
      .yield_self { |lines|
        lines
        .map { |l| l.gsub(/\e\[(\d+)(;\d+)*m/, '').size }
        .max
        .yield_self { |column_w|
          lines
          .map { |l| l.ljust(column_w) }
          .+([' ' * column_w])
        }
      }
    }
    .transpose
    .map(&:join)
  }.join("\n")
end

#render_verticalObject



15
16
17
# File 'lib/coltrane/renderers/text_renderer/array_drawer.rb', line 15

def render_vertical
  renders.join("\n")
end

#rendersObject



11
12
13
# File 'lib/coltrane/renderers/text_renderer/array_drawer.rb', line 11

def renders
  @renders ||= array.map {|it| TextRenderer.render(it, **options) }
end