tty 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.travis.yml +4 -3
 - data/CHANGELOG.md +5 -0
 - data/README.md +42 -306
 - data/lib/tty/{text → shell}/distance.rb +5 -27
 - data/lib/tty/shell/suggestion.rb +42 -22
 - data/lib/tty/version.rb +1 -1
 - data/lib/tty.rb +2 -42
 - data/spec/tty/{text → shell}/distance/distance_spec.rb +4 -4
 - data/spec/tty/shell/distance/initialize_spec.rb +14 -0
 - data/tty.gemspec +4 -3
 - metadata +37 -269
 - data/benchmarks/table.rb +0 -40
 - data/lib/tty/table/border/ascii.rb +0 -32
 - data/lib/tty/table/border/null.rb +0 -37
 - data/lib/tty/table/border/row_line.rb +0 -18
 - data/lib/tty/table/border/unicode.rb +0 -32
 - data/lib/tty/table/border.rb +0 -222
 - data/lib/tty/table/border_dsl.rb +0 -251
 - data/lib/tty/table/border_options.rb +0 -53
 - data/lib/tty/table/column_set.rb +0 -121
 - data/lib/tty/table/columns.rb +0 -170
 - data/lib/tty/table/error.rb +0 -18
 - data/lib/tty/table/field.rb +0 -139
 - data/lib/tty/table/header.rb +0 -133
 - data/lib/tty/table/indentation.rb +0 -52
 - data/lib/tty/table/operation/alignment.rb +0 -107
 - data/lib/tty/table/operation/alignment_set.rb +0 -77
 - data/lib/tty/table/operation/escape.rb +0 -30
 - data/lib/tty/table/operation/filter.rb +0 -34
 - data/lib/tty/table/operation/padding.rb +0 -95
 - data/lib/tty/table/operation/truncation.rb +0 -55
 - data/lib/tty/table/operation/wrapped.rb +0 -58
 - data/lib/tty/table/operations.rb +0 -69
 - data/lib/tty/table/orientation/horizontal.rb +0 -48
 - data/lib/tty/table/orientation/vertical.rb +0 -38
 - data/lib/tty/table/orientation.rb +0 -57
 - data/lib/tty/table/padder.rb +0 -180
 - data/lib/tty/table/renderer/ascii.rb +0 -16
 - data/lib/tty/table/renderer/basic.rb +0 -294
 - data/lib/tty/table/renderer/color.rb +0 -12
 - data/lib/tty/table/renderer/unicode.rb +0 -21
 - data/lib/tty/table/renderer.rb +0 -101
 - data/lib/tty/table/row.rb +0 -217
 - data/lib/tty/table/transformation.rb +0 -39
 - data/lib/tty/table/validatable.rb +0 -64
 - data/lib/tty/table.rb +0 -476
 - data/lib/tty/text/truncation.rb +0 -99
 - data/lib/tty/text/wrapping.rb +0 -118
 - data/lib/tty/text.rb +0 -98
 - data/spec/tty/table/access_spec.rb +0 -86
 - data/spec/tty/table/add_row_spec.rb +0 -28
 - data/spec/tty/table/border/ascii/rendering_spec.rb +0 -90
 - data/spec/tty/table/border/new_spec.rb +0 -27
 - data/spec/tty/table/border/null/rendering_spec.rb +0 -130
 - data/spec/tty/table/border/options/from_spec.rb +0 -38
 - data/spec/tty/table/border/options/new_spec.rb +0 -14
 - data/spec/tty/table/border/unicode/rendering_spec.rb +0 -63
 - data/spec/tty/table/border_options/new_spec.rb +0 -20
 - data/spec/tty/table/border_options/update_spec.rb +0 -18
 - data/spec/tty/table/column_set/extract_widths_spec.rb +0 -15
 - data/spec/tty/table/column_set/total_width_spec.rb +0 -15
 - data/spec/tty/table/column_set/widths_from_spec.rb +0 -51
 - data/spec/tty/table/columns/enforce_spec.rb +0 -68
 - data/spec/tty/table/columns/widths_spec.rb +0 -35
 - data/spec/tty/table/data_spec.rb +0 -14
 - data/spec/tty/table/each_spec.rb +0 -41
 - data/spec/tty/table/each_with_index_spec.rb +0 -57
 - data/spec/tty/table/empty_spec.rb +0 -23
 - data/spec/tty/table/eql_spec.rb +0 -34
 - data/spec/tty/table/field/equality_spec.rb +0 -51
 - data/spec/tty/table/field/length_spec.rb +0 -21
 - data/spec/tty/table/field/lines_spec.rb +0 -21
 - data/spec/tty/table/field/new_spec.rb +0 -29
 - data/spec/tty/table/field/width_spec.rb +0 -23
 - data/spec/tty/table/filter_spec.rb +0 -23
 - data/spec/tty/table/header/call_spec.rb +0 -30
 - data/spec/tty/table/header/height_spec.rb +0 -27
 - data/spec/tty/table/header/new_spec.rb +0 -25
 - data/spec/tty/table/header/set_spec.rb +0 -20
 - data/spec/tty/table/header/to_ary_spec.rb +0 -14
 - data/spec/tty/table/header_spec.rb +0 -13
 - data/spec/tty/table/indentation/insert_indent_spec.rb +0 -27
 - data/spec/tty/table/initialize_spec.rb +0 -88
 - data/spec/tty/table/operation/alignment/format_spec.rb +0 -47
 - data/spec/tty/table/operation/alignment/new_spec.rb +0 -31
 - data/spec/tty/table/operation/alignment_set/call_spec.rb +0 -39
 - data/spec/tty/table/operation/alignment_set/each_spec.rb +0 -17
 - data/spec/tty/table/operation/alignment_set/new_spec.rb +0 -27
 - data/spec/tty/table/operation/alignment_set/to_ary_spec.rb +0 -14
 - data/spec/tty/table/operation/escape/call_spec.rb +0 -16
 - data/spec/tty/table/operation/filter/call_spec.rb +0 -17
 - data/spec/tty/table/operation/truncation/call_spec.rb +0 -32
 - data/spec/tty/table/operation/truncation/truncate_spec.rb +0 -22
 - data/spec/tty/table/operation/wrapped/call_spec.rb +0 -33
 - data/spec/tty/table/operation/wrapped/wrap_spec.rb +0 -23
 - data/spec/tty/table/operations/new_spec.rb +0 -30
 - data/spec/tty/table/options_spec.rb +0 -25
 - data/spec/tty/table/orientation_spec.rb +0 -145
 - data/spec/tty/table/padder/parse_spec.rb +0 -45
 - data/spec/tty/table/padder/to_s_spec.rb +0 -14
 - data/spec/tty/table/padding_spec.rb +0 -120
 - data/spec/tty/table/properties_spec.rb +0 -25
 - data/spec/tty/table/render_spec.rb +0 -63
 - data/spec/tty/table/render_with_spec.rb +0 -106
 - data/spec/tty/table/renderer/ascii/indentation_spec.rb +0 -41
 - data/spec/tty/table/renderer/ascii/padding_spec.rb +0 -61
 - data/spec/tty/table/renderer/ascii/render_spec.rb +0 -68
 - data/spec/tty/table/renderer/ascii/resizing_spec.rb +0 -114
 - data/spec/tty/table/renderer/ascii/separator_spec.rb +0 -28
 - data/spec/tty/table/renderer/basic/alignment_spec.rb +0 -88
 - data/spec/tty/table/renderer/basic/coloring_spec.rb +0 -46
 - data/spec/tty/table/renderer/basic/extract_column_widths_spec.rb +0 -28
 - data/spec/tty/table/renderer/basic/filter_spec.rb +0 -53
 - data/spec/tty/table/renderer/basic/indentation_spec.rb +0 -48
 - data/spec/tty/table/renderer/basic/multiline_content_spec.rb +0 -135
 - data/spec/tty/table/renderer/basic/new_spec.rb +0 -22
 - data/spec/tty/table/renderer/basic/options_spec.rb +0 -48
 - data/spec/tty/table/renderer/basic/padding_spec.rb +0 -52
 - data/spec/tty/table/renderer/basic/render_spec.rb +0 -57
 - data/spec/tty/table/renderer/basic/resizing_spec.rb +0 -96
 - data/spec/tty/table/renderer/basic/separator_spec.rb +0 -43
 - data/spec/tty/table/renderer/basic/truncation_spec.rb +0 -35
 - data/spec/tty/table/renderer/basic/wrapping_spec.rb +0 -40
 - data/spec/tty/table/renderer/basic_spec.rb +0 -0
 - data/spec/tty/table/renderer/border_spec.rb +0 -104
 - data/spec/tty/table/renderer/render_spec.rb +0 -36
 - data/spec/tty/table/renderer/select_spec.rb +0 -22
 - data/spec/tty/table/renderer/style_spec.rb +0 -72
 - data/spec/tty/table/renderer/unicode/indentation_spec.rb +0 -41
 - data/spec/tty/table/renderer/unicode/padding_spec.rb +0 -61
 - data/spec/tty/table/renderer/unicode/render_spec.rb +0 -68
 - data/spec/tty/table/renderer/unicode/separator_spec.rb +0 -26
 - data/spec/tty/table/renderer_spec.rb +0 -19
 - data/spec/tty/table/rotate_spec.rb +0 -86
 - data/spec/tty/table/row/access_spec.rb +0 -25
 - data/spec/tty/table/row/call_spec.rb +0 -41
 - data/spec/tty/table/row/data_spec.rb +0 -26
 - data/spec/tty/table/row/each_spec.rb +0 -31
 - data/spec/tty/table/row/equality_spec.rb +0 -73
 - data/spec/tty/table/row/height_spec.rb +0 -27
 - data/spec/tty/table/row/new_spec.rb +0 -41
 - data/spec/tty/table/row/to_ary_spec.rb +0 -14
 - data/spec/tty/table/to_s_spec.rb +0 -63
 - data/spec/tty/table/transformation/extract_tuples_spec.rb +0 -35
 - data/spec/tty/table/validatable/validate_options_spec.rb +0 -33
 - data/spec/tty/table/validatable_spec.rb +0 -32
 - data/spec/tty/text/distance/initialize_spec.rb +0 -14
 - data/spec/tty/text/distance_spec.rb +0 -11
 - data/spec/tty/text/truncate_spec.rb +0 -12
 - data/spec/tty/text/truncation/initialize_spec.rb +0 -29
 - data/spec/tty/text/truncation/truncate_spec.rb +0 -94
 - data/spec/tty/text/wrap_spec.rb +0 -13
 - data/spec/tty/text/wrapping/initialize_spec.rb +0 -25
 - data/spec/tty/text/wrapping/wrap_spec.rb +0 -97
 
| 
         @@ -1,88 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'spec_helper'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            describe TTY::Table::Renderer::Basic, 'alignment' do
         
     | 
| 
       6 
     | 
    
         
            -
              let(:header)  { ['h1', 'h2', 'h3'] }
         
     | 
| 
       7 
     | 
    
         
            -
              let(:rows)    { [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']] }
         
     | 
| 
       8 
     | 
    
         
            -
              let(:options) { { column_aligns: column_aligns } }
         
     | 
| 
       9 
     | 
    
         
            -
              let(:table)   { TTY::Table.new(header, rows) }
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
              subject(:renderer) { described_class.new table, options }
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              context 'with default' do
         
     | 
| 
       14 
     | 
    
         
            -
                let(:header)        { ['h1', 'h2'] }
         
     | 
| 
       15 
     | 
    
         
            -
                let(:rows)          { [['aaaaa', 'a'], ['b', 'bbbbb']] }
         
     | 
| 
       16 
     | 
    
         
            -
                let(:column_aligns) { nil }
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                it 'aligns left by default' do
         
     | 
| 
       19 
     | 
    
         
            -
                  expect(renderer.render).to eql <<-EOS.normalize
         
     | 
| 
       20 
     | 
    
         
            -
                    h1    h2   
         
     | 
| 
       21 
     | 
    
         
            -
                    aaaaa a    
         
     | 
| 
       22 
     | 
    
         
            -
                    b     bbbbb
         
     | 
| 
       23 
     | 
    
         
            -
                  EOS
         
     | 
| 
       24 
     | 
    
         
            -
                end
         
     | 
| 
       25 
     | 
    
         
            -
              end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
              context 'with different headers' do
         
     | 
| 
       28 
     | 
    
         
            -
                let(:header)        { ['header1', 'head2', 'h3'] }
         
     | 
| 
       29 
     | 
    
         
            -
                let(:column_aligns) { [:left, :center, :right] }
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                it 'aligns headers' do
         
     | 
| 
       32 
     | 
    
         
            -
                  expect(renderer.render).to eql <<-EOS.normalize
         
     | 
| 
       33 
     | 
    
         
            -
                    header1 head2 h3
         
     | 
| 
       34 
     | 
    
         
            -
                    a1       a2   a3
         
     | 
| 
       35 
     | 
    
         
            -
                    b1       b2   b3
         
     | 
| 
       36 
     | 
    
         
            -
                  EOS
         
     | 
| 
       37 
     | 
    
         
            -
                end
         
     | 
| 
       38 
     | 
    
         
            -
              end
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
              context 'with different aligns' do
         
     | 
| 
       41 
     | 
    
         
            -
                let(:header)         { nil }
         
     | 
| 
       42 
     | 
    
         
            -
                let(:rows)           { [['aaaaa', 'a'], ['b', 'bbbbb']] }
         
     | 
| 
       43 
     | 
    
         
            -
                let(:column_aligns)  { [:left, :right] }
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                it 'aligns table rows' do
         
     | 
| 
       46 
     | 
    
         
            -
                  expect(renderer.render.to_s).to eql <<-EOS.normalize
         
     | 
| 
       47 
     | 
    
         
            -
                    aaaaa     a
         
     | 
| 
       48 
     | 
    
         
            -
                    b     bbbbb
         
     | 
| 
       49 
     | 
    
         
            -
                  EOS
         
     | 
| 
       50 
     | 
    
         
            -
                end
         
     | 
| 
       51 
     | 
    
         
            -
              end
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
              context 'with individual field aligns' do
         
     | 
| 
       54 
     | 
    
         
            -
                let(:header)        { ['header1', 'header2', 'header3'] }
         
     | 
| 
       55 
     | 
    
         
            -
                let(:column_aligns) { [:left, :center, :right] }
         
     | 
| 
       56 
     | 
    
         
            -
                let(:options)       { {column_aligns: column_aligns} }
         
     | 
| 
       57 
     | 
    
         
            -
                let(:table) {
         
     | 
| 
       58 
     | 
    
         
            -
                  TTY::Table.new header: header do |t|
         
     | 
| 
       59 
     | 
    
         
            -
                    t << ['a1', 'a2', 'a3']
         
     | 
| 
       60 
     | 
    
         
            -
                    t << ['b1', {value: 'b2', align: :right}, 'b3']
         
     | 
| 
       61 
     | 
    
         
            -
                    t << ['c1', 'c2', {value: 'c3', align: :center}]
         
     | 
| 
       62 
     | 
    
         
            -
                  end
         
     | 
| 
       63 
     | 
    
         
            -
                }
         
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
                it "takes individual fields over global aligns" do
         
     | 
| 
       66 
     | 
    
         
            -
                  expect(renderer.render).to eq <<-EOS.normalize
         
     | 
| 
       67 
     | 
    
         
            -
                    header1 header2 header3
         
     | 
| 
       68 
     | 
    
         
            -
                    a1        a2         a3
         
     | 
| 
       69 
     | 
    
         
            -
                    b1           b2      b3
         
     | 
| 
       70 
     | 
    
         
            -
                    c1        c2      c3   
         
     | 
| 
       71 
     | 
    
         
            -
                  EOS
         
     | 
| 
       72 
     | 
    
         
            -
                end
         
     | 
| 
       73 
     | 
    
         
            -
              end
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
              context 'with aligned header' do
         
     | 
| 
       76 
     | 
    
         
            -
                let(:rows)    { [['aaaaa1', 'a2', 'aaa3'], ['b1', 'bbbb2', 'bb3']] }
         
     | 
| 
       77 
     | 
    
         
            -
                let(:header)  {['h1', {:value => 'h2', :align => :right}, {:value => 'h3', :align => :center}] }
         
     | 
| 
       78 
     | 
    
         
            -
                let(:options) { { renderer: :basic } }
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
                it "aligns headres" do
         
     | 
| 
       81 
     | 
    
         
            -
                  expect(renderer.render).to eq <<-EOS.normalize
         
     | 
| 
       82 
     | 
    
         
            -
                    h1        h2  h3 
         
     | 
| 
       83 
     | 
    
         
            -
                    aaaaa1 a2    aaa3
         
     | 
| 
       84 
     | 
    
         
            -
                    b1     bbbb2 bb3 
         
     | 
| 
       85 
     | 
    
         
            -
                  EOS
         
     | 
| 
       86 
     | 
    
         
            -
                end
         
     | 
| 
       87 
     | 
    
         
            -
              end
         
     | 
| 
       88 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,46 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'spec_helper'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            RSpec.describe TTY::Table::Renderer::Basic, 'coloring' do
         
     | 
| 
       6 
     | 
    
         
            -
              let(:header)   { ['h1', 'h2'] }
         
     | 
| 
       7 
     | 
    
         
            -
              let(:rows)     { [['a1', 'a2'], ['b1', 'b2']] }
         
     | 
| 
       8 
     | 
    
         
            -
              let(:clear)    { "\e[0m" }
         
     | 
| 
       9 
     | 
    
         
            -
              let(:options)  { {filter: filter } }
         
     | 
| 
       10 
     | 
    
         
            -
              let(:table)    { TTY::Table.new(header, rows) }
         
     | 
| 
       11 
     | 
    
         
            -
              let(:color)    { Pastel.new(enabled: true) }
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              subject(:renderer) { described_class.new(table, options) }
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
              before { allow(Pastel).to receive(:new).and_return(color) }
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
              context 'with filter on all fields' do
         
     | 
| 
       18 
     | 
    
         
            -
                let(:filter) {
         
     | 
| 
       19 
     | 
    
         
            -
                  proc { |val, row, col| color.decorate val, :blue, :on_green }
         
     | 
| 
       20 
     | 
    
         
            -
                }
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                it 'colors all elements' do
         
     | 
| 
       23 
     | 
    
         
            -
                  expect(renderer.render).to eql <<-EOS.normalize
         
     | 
| 
       24 
     | 
    
         
            -
                    \e[34;42mh1#{clear} \e[34;42mh2#{clear}
         
     | 
| 
       25 
     | 
    
         
            -
                    \e[34;42ma1#{clear} \e[34;42ma2#{clear}
         
     | 
| 
       26 
     | 
    
         
            -
                    \e[34;42mb1#{clear} \e[34;42mb2#{clear}
         
     | 
| 
       27 
     | 
    
         
            -
                  EOS
         
     | 
| 
       28 
     | 
    
         
            -
                end
         
     | 
| 
       29 
     | 
    
         
            -
              end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
              context 'with filter only on header' do
         
     | 
| 
       32 
     | 
    
         
            -
                let(:filter) {
         
     | 
| 
       33 
     | 
    
         
            -
                  proc { |val, row, col|
         
     | 
| 
       34 
     | 
    
         
            -
                    row.zero? ?  color.decorate(val, :blue, :on_green) : val
         
     | 
| 
       35 
     | 
    
         
            -
                  }
         
     | 
| 
       36 
     | 
    
         
            -
                }
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                it 'colors only header' do
         
     | 
| 
       39 
     | 
    
         
            -
                  expect(renderer.render).to eql <<-EOS.normalize
         
     | 
| 
       40 
     | 
    
         
            -
                    \e[34;42mh1#{clear} \e[34;42mh2#{clear}
         
     | 
| 
       41 
     | 
    
         
            -
                    a1 a2
         
     | 
| 
       42 
     | 
    
         
            -
                    b1 b2
         
     | 
| 
       43 
     | 
    
         
            -
                  EOS
         
     | 
| 
       44 
     | 
    
         
            -
                end
         
     | 
| 
       45 
     | 
    
         
            -
              end
         
     | 
| 
       46 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,28 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'spec_helper'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            describe TTY::Table::Renderer::Basic, '#column_widths' do
         
     | 
| 
       6 
     | 
    
         
            -
              let(:rows)   { [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']] }
         
     | 
| 
       7 
     | 
    
         
            -
              let(:renderer) { described_class.new(table) }
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
              subject { renderer.render }
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
              context 'with rows only' do
         
     | 
| 
       12 
     | 
    
         
            -
                let(:rows)  { [['a1a', 'a2a2a2'], ['b1b1b', 'b2b2']] }
         
     | 
| 
       13 
     | 
    
         
            -
                let(:table) { TTY::Table.new rows }
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                it 'calculates column widths' do
         
     | 
| 
       16 
     | 
    
         
            -
                  expect(renderer.column_widths).to eq([5,6])
         
     | 
| 
       17 
     | 
    
         
            -
                end
         
     | 
| 
       18 
     | 
    
         
            -
              end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
              context 'with header' do
         
     | 
| 
       21 
     | 
    
         
            -
                let(:header) { ['header1', 'head2', 'h3'] }
         
     | 
| 
       22 
     | 
    
         
            -
                let(:table)  { TTY::Table.new header, rows }
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                it 'calcualtes column widths with header' do
         
     | 
| 
       25 
     | 
    
         
            -
                  expect(renderer.column_widths).to eq([7,5,2])
         
     | 
| 
       26 
     | 
    
         
            -
                end
         
     | 
| 
       27 
     | 
    
         
            -
              end
         
     | 
| 
       28 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,53 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'spec_helper'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            describe TTY::Table::Renderer::Basic, 'filter' do
         
     | 
| 
       6 
     | 
    
         
            -
              let(:header) { ['h1', 'h2', 'h3'] }
         
     | 
| 
       7 
     | 
    
         
            -
              let(:rows)   { [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']] }
         
     | 
| 
       8 
     | 
    
         
            -
              let(:table)  { TTY::Table.new(header, rows) }
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              subject(:renderer) { described_class.new(table, {filter: filter}) }
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
              context 'with header' do
         
     | 
| 
       13 
     | 
    
         
            -
                context 'filtering only rows' do
         
     | 
| 
       14 
     | 
    
         
            -
                  let(:filter) { Proc.new { |val, row, col|
         
     | 
| 
       15 
     | 
    
         
            -
                      (col == 1 and row > 0) ? val.capitalize : val
         
     | 
| 
       16 
     | 
    
         
            -
                    }
         
     | 
| 
       17 
     | 
    
         
            -
                  }
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  it 'filters only rows' do
         
     | 
| 
       20 
     | 
    
         
            -
                    expect(renderer.render).to eq <<-EOS.normalize
         
     | 
| 
       21 
     | 
    
         
            -
                      h1 h2 h3
         
     | 
| 
       22 
     | 
    
         
            -
                      a1 A2 a3
         
     | 
| 
       23 
     | 
    
         
            -
                      b1 B2 b3
         
     | 
| 
       24 
     | 
    
         
            -
                    EOS
         
     | 
| 
       25 
     | 
    
         
            -
                  end
         
     | 
| 
       26 
     | 
    
         
            -
                end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                context 'filtering header and rows' do
         
     | 
| 
       29 
     | 
    
         
            -
                  let(:filter) { Proc.new { |val, row, col| col == 1 ? val.capitalize : val }}
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                  it 'filters only rows' do
         
     | 
| 
       32 
     | 
    
         
            -
                    expect(renderer.render).to eq <<-EOS.normalize
         
     | 
| 
       33 
     | 
    
         
            -
                      h1 H2 h3
         
     | 
| 
       34 
     | 
    
         
            -
                      a1 A2 a3
         
     | 
| 
       35 
     | 
    
         
            -
                      b1 B2 b3
         
     | 
| 
       36 
     | 
    
         
            -
                    EOS
         
     | 
| 
       37 
     | 
    
         
            -
                  end
         
     | 
| 
       38 
     | 
    
         
            -
                end
         
     | 
| 
       39 
     | 
    
         
            -
              end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
              context 'without header' do
         
     | 
| 
       42 
     | 
    
         
            -
                let(:header) { nil }
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                let(:filter) { Proc.new { |val, row, col| col == 1 ?  val.capitalize : val } }
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                it 'filters only rows' do
         
     | 
| 
       47 
     | 
    
         
            -
                  expect(renderer.render).to eq <<-EOS.normalize
         
     | 
| 
       48 
     | 
    
         
            -
                    a1 A2 a3
         
     | 
| 
       49 
     | 
    
         
            -
                    b1 B2 b3
         
     | 
| 
       50 
     | 
    
         
            -
                  EOS
         
     | 
| 
       51 
     | 
    
         
            -
                end
         
     | 
| 
       52 
     | 
    
         
            -
              end
         
     | 
| 
       53 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,48 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'spec_helper'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            describe TTY::Table::Renderer::Basic, 'indentation' do
         
     | 
| 
       6 
     | 
    
         
            -
              let(:header)  { ['h1', 'h2', 'h3'] }
         
     | 
| 
       7 
     | 
    
         
            -
              let(:rows)    { [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']] }
         
     | 
| 
       8 
     | 
    
         
            -
              let(:table)   { TTY::Table.new(header, rows) }
         
     | 
| 
       9 
     | 
    
         
            -
              let(:options) { {indent: indent } }
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
              subject(:renderer) { described_class.new(table, options)}
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              context 'when default' do
         
     | 
| 
       14 
     | 
    
         
            -
                let(:indent) { 0 }
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                it 'indents by value' do
         
     | 
| 
       17 
     | 
    
         
            -
                  expect(renderer.render).to eql <<-EOS.chomp
         
     | 
| 
       18 
     | 
    
         
            -
            h1 h2 h3
         
     | 
| 
       19 
     | 
    
         
            -
            a1 a2 a3
         
     | 
| 
       20 
     | 
    
         
            -
            b1 b2 b3
         
     | 
| 
       21 
     | 
    
         
            -
                  EOS
         
     | 
| 
       22 
     | 
    
         
            -
                end
         
     | 
| 
       23 
     | 
    
         
            -
              end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
              context 'when custom' do
         
     | 
| 
       26 
     | 
    
         
            -
                let(:indent) { 2 }
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                it 'indents by value' do
         
     | 
| 
       29 
     | 
    
         
            -
                  expect(renderer.render).to eql <<-EOS.chomp
         
     | 
| 
       30 
     | 
    
         
            -
              h1 h2 h3
         
     | 
| 
       31 
     | 
    
         
            -
              a1 a2 a3
         
     | 
| 
       32 
     | 
    
         
            -
              b1 b2 b3
         
     | 
| 
       33 
     | 
    
         
            -
                  EOS
         
     | 
| 
       34 
     | 
    
         
            -
                end
         
     | 
| 
       35 
     | 
    
         
            -
              end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
              context 'when changed' do
         
     | 
| 
       38 
     | 
    
         
            -
                let(:indent) { 2 }
         
     | 
| 
       39 
     | 
    
         
            -
                let(:header) { ['h1', 'h2'] }
         
     | 
| 
       40 
     | 
    
         
            -
                let(:rows)   { [['a1', 'a2']] }
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
                it 'changes indentation and reuses renderer' do
         
     | 
| 
       43 
     | 
    
         
            -
                  expect(renderer.render).to eq("  h1 h2\n  a1 a2")
         
     | 
| 
       44 
     | 
    
         
            -
                  renderer.indent = 1
         
     | 
| 
       45 
     | 
    
         
            -
                  expect(renderer.render).to eq(" h1 h2\n a1 a2")
         
     | 
| 
       46 
     | 
    
         
            -
                end
         
     | 
| 
       47 
     | 
    
         
            -
              end
         
     | 
| 
       48 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,135 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'spec_helper'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            describe TTY::Table::Renderer::Basic, 'with multiline content' do
         
     | 
| 
       6 
     | 
    
         
            -
              let(:header) { nil }
         
     | 
| 
       7 
     | 
    
         
            -
              let(:object) { described_class }
         
     | 
| 
       8 
     | 
    
         
            -
              let(:table) { TTY::Table.new header, rows }
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              subject(:renderer) { object.new table }
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
              context 'with escaping' do
         
     | 
| 
       13 
     | 
    
         
            -
                let(:rows) { [ ["First", '1'], ["Multiline\nContent", '2'], ["Third", '3']] }
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                context 'without border' do
         
     | 
| 
       16 
     | 
    
         
            -
                  it "renders single line" do
         
     | 
| 
       17 
     | 
    
         
            -
                    expect(table.render(multiline: false)).to eq <<-EOS.normalize
         
     | 
| 
       18 
     | 
    
         
            -
                      First              1
         
     | 
| 
       19 
     | 
    
         
            -
                      Multiline\\nContent 2
         
     | 
| 
       20 
     | 
    
         
            -
                      Third              3
         
     | 
| 
       21 
     | 
    
         
            -
                    EOS
         
     | 
| 
       22 
     | 
    
         
            -
                  end
         
     | 
| 
       23 
     | 
    
         
            -
                end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                context 'with column widths' do
         
     | 
| 
       26 
     | 
    
         
            -
                  it "renders single line" do
         
     | 
| 
       27 
     | 
    
         
            -
                    expect(table.render(multiline: false, column_widths: [8,1])).to eq <<-EOS.normalize
         
     | 
| 
       28 
     | 
    
         
            -
                      First    1
         
     | 
| 
       29 
     | 
    
         
            -
                      Multili… 2
         
     | 
| 
       30 
     | 
    
         
            -
                      Third    3
         
     | 
| 
       31 
     | 
    
         
            -
                    EOS
         
     | 
| 
       32 
     | 
    
         
            -
                  end
         
     | 
| 
       33 
     | 
    
         
            -
                end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                context 'with border' do
         
     | 
| 
       36 
     | 
    
         
            -
                  it "renders single line" do
         
     | 
| 
       37 
     | 
    
         
            -
                    expect(table.render(:ascii, multiline: false)).to eq <<-EOS.normalize
         
     | 
| 
       38 
     | 
    
         
            -
                     +------------------+-+
         
     | 
| 
       39 
     | 
    
         
            -
                     |First             |1|
         
     | 
| 
       40 
     | 
    
         
            -
                     |Multiline\\nContent|2|
         
     | 
| 
       41 
     | 
    
         
            -
                     |Third             |3|
         
     | 
| 
       42 
     | 
    
         
            -
                     +------------------+-+
         
     | 
| 
       43 
     | 
    
         
            -
                    EOS
         
     | 
| 
       44 
     | 
    
         
            -
                  end
         
     | 
| 
       45 
     | 
    
         
            -
                end
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
                context 'with header' do
         
     | 
| 
       48 
     | 
    
         
            -
                  let(:header) { ["Multi\nHeader", "header2"] }
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                  it "renders header" do
         
     | 
| 
       51 
     | 
    
         
            -
                    expect(table.render(:ascii, multiline: false)).to eq <<-EOS.normalize
         
     | 
| 
       52 
     | 
    
         
            -
                     +------------------+-------+
         
     | 
| 
       53 
     | 
    
         
            -
                     |Multi\\nHeader     |header2|
         
     | 
| 
       54 
     | 
    
         
            -
                     +------------------+-------+
         
     | 
| 
       55 
     | 
    
         
            -
                     |First             |1      |
         
     | 
| 
       56 
     | 
    
         
            -
                     |Multiline\\nContent|2      |
         
     | 
| 
       57 
     | 
    
         
            -
                     |Third             |3      |
         
     | 
| 
       58 
     | 
    
         
            -
                     +------------------+-------+
         
     | 
| 
       59 
     | 
    
         
            -
                    EOS
         
     | 
| 
       60 
     | 
    
         
            -
                  end
         
     | 
| 
       61 
     | 
    
         
            -
                end
         
     | 
| 
       62 
     | 
    
         
            -
              end
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
              context 'without escaping' do
         
     | 
| 
       65 
     | 
    
         
            -
                let(:rows) { [ ["First", '1'], ["Multi\nLine\nContent", '2'], ["Third", '3']] }
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
                context 'without border' do
         
     | 
| 
       68 
     | 
    
         
            -
                  it "renders every line" do
         
     | 
| 
       69 
     | 
    
         
            -
                    expect(table.render(multiline: true)).to eq <<-EOS.normalize
         
     | 
| 
       70 
     | 
    
         
            -
                      First   1
         
     | 
| 
       71 
     | 
    
         
            -
                      Multi   2
         
     | 
| 
       72 
     | 
    
         
            -
                      Line     
         
     | 
| 
       73 
     | 
    
         
            -
                      Content  
         
     | 
| 
       74 
     | 
    
         
            -
                      Third   3
         
     | 
| 
       75 
     | 
    
         
            -
                    EOS
         
     | 
| 
       76 
     | 
    
         
            -
                  end
         
     | 
| 
       77 
     | 
    
         
            -
                end
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
                context 'with column widths' do
         
     | 
| 
       80 
     | 
    
         
            -
                  it "renders multiline" do
         
     | 
| 
       81 
     | 
    
         
            -
                    expect(table.render(multiline: true, column_widths: [8,1])).to eq <<-EOS.normalize
         
     | 
| 
       82 
     | 
    
         
            -
                      First    1
         
     | 
| 
       83 
     | 
    
         
            -
                      Multi    2
         
     | 
| 
       84 
     | 
    
         
            -
                      Line      
         
     | 
| 
       85 
     | 
    
         
            -
                      Content   
         
     | 
| 
       86 
     | 
    
         
            -
                      Third    3
         
     | 
| 
       87 
     | 
    
         
            -
                    EOS
         
     | 
| 
       88 
     | 
    
         
            -
                  end
         
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
     | 
    
         
            -
                  it 'wraps multi line' do
         
     | 
| 
       91 
     | 
    
         
            -
                    expect(table.render(multiline: true, column_widths: [5,1])).to eq <<-EOS.normalize
         
     | 
| 
       92 
     | 
    
         
            -
                      First 1
         
     | 
| 
       93 
     | 
    
         
            -
                      Multi 2
         
     | 
| 
       94 
     | 
    
         
            -
                      Line   
         
     | 
| 
       95 
     | 
    
         
            -
                      Conte  
         
     | 
| 
       96 
     | 
    
         
            -
                      nt     
         
     | 
| 
       97 
     | 
    
         
            -
                      Third 3
         
     | 
| 
       98 
     | 
    
         
            -
                    EOS
         
     | 
| 
       99 
     | 
    
         
            -
                  end
         
     | 
| 
       100 
     | 
    
         
            -
                end
         
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
                context 'with border' do
         
     | 
| 
       103 
     | 
    
         
            -
                  it "renders every line" do
         
     | 
| 
       104 
     | 
    
         
            -
                    expect(table.render(:ascii, multiline: true)).to eq <<-EOS.normalize
         
     | 
| 
       105 
     | 
    
         
            -
                     +-------+-+
         
     | 
| 
       106 
     | 
    
         
            -
                     |First  |1|
         
     | 
| 
       107 
     | 
    
         
            -
                     |Multi  |2|
         
     | 
| 
       108 
     | 
    
         
            -
                     |Line   | |
         
     | 
| 
       109 
     | 
    
         
            -
                     |Content| |
         
     | 
| 
       110 
     | 
    
         
            -
                     |Third  |3|
         
     | 
| 
       111 
     | 
    
         
            -
                     +-------+-+
         
     | 
| 
       112 
     | 
    
         
            -
                    EOS
         
     | 
| 
       113 
     | 
    
         
            -
                  end
         
     | 
| 
       114 
     | 
    
         
            -
                end
         
     | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
       116 
     | 
    
         
            -
                context 'with header' do
         
     | 
| 
       117 
     | 
    
         
            -
                  let(:header) { ["Multi\nHeader", "header2"] }
         
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
       119 
     | 
    
         
            -
                  it "renders header" do
         
     | 
| 
       120 
     | 
    
         
            -
                    expect(table.render(:ascii, multiline: true)).to eq <<-EOS.normalize
         
     | 
| 
       121 
     | 
    
         
            -
                     +-------+-------+
         
     | 
| 
       122 
     | 
    
         
            -
                     |Multi  |header2|
         
     | 
| 
       123 
     | 
    
         
            -
                     |Header |       |
         
     | 
| 
       124 
     | 
    
         
            -
                     +-------+-------+
         
     | 
| 
       125 
     | 
    
         
            -
                     |First  |1      |
         
     | 
| 
       126 
     | 
    
         
            -
                     |Multi  |2      |
         
     | 
| 
       127 
     | 
    
         
            -
                     |Line   |       |
         
     | 
| 
       128 
     | 
    
         
            -
                     |Content|       |
         
     | 
| 
       129 
     | 
    
         
            -
                     |Third  |3      |
         
     | 
| 
       130 
     | 
    
         
            -
                     +-------+-------+
         
     | 
| 
       131 
     | 
    
         
            -
                    EOS
         
     | 
| 
       132 
     | 
    
         
            -
                  end
         
     | 
| 
       133 
     | 
    
         
            -
                end
         
     | 
| 
       134 
     | 
    
         
            -
              end
         
     | 
| 
       135 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,22 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'spec_helper'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            describe TTY::Table::Renderer::Basic, '.new' do
         
     | 
| 
       6 
     | 
    
         
            -
              let(:header) { ['h1'] }
         
     | 
| 
       7 
     | 
    
         
            -
              let(:rows)   { [['a1']] }
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
              subject(:renderer) { described_class }
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
              context 'without table' do
         
     | 
| 
       12 
     | 
    
         
            -
                let(:table) { nil }
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                it { expect { renderer.new(table) }.to raise_error(TTY::ArgumentRequired) }
         
     | 
| 
       15 
     | 
    
         
            -
              end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
              context 'with table' do
         
     | 
| 
       18 
     | 
    
         
            -
                let(:table)  { TTY::Table.new(header, rows) }
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
                it { expect { renderer.new(table) }.not_to raise_error }
         
     | 
| 
       21 
     | 
    
         
            -
              end
         
     | 
| 
       22 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,48 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'spec_helper'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            describe TTY::Table::Renderer::Basic, 'options' do
         
     | 
| 
       6 
     | 
    
         
            -
              let(:rows)   { [['a1', 'a2'], ['b1', 'b2']] }
         
     | 
| 
       7 
     | 
    
         
            -
              let(:object) { described_class }
         
     | 
| 
       8 
     | 
    
         
            -
              let(:table)  { TTY::Table.new(rows) }
         
     | 
| 
       9 
     | 
    
         
            -
              let(:widths) { nil }
         
     | 
| 
       10 
     | 
    
         
            -
              let(:aligns) { [] }
         
     | 
| 
       11 
     | 
    
         
            -
              let(:options) {
         
     | 
| 
       12 
     | 
    
         
            -
                {
         
     | 
| 
       13 
     | 
    
         
            -
                  :column_widths => widths,
         
     | 
| 
       14 
     | 
    
         
            -
                  :column_aligns  => aligns,
         
     | 
| 
       15 
     | 
    
         
            -
                  :renderer => :basic
         
     | 
| 
       16 
     | 
    
         
            -
                }
         
     | 
| 
       17 
     | 
    
         
            -
              }
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
              subject(:renderer) { object.new table, options }
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
              it { expect(renderer.border).to be_kind_of(TTY::Table::BorderOptions) }
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
              it { expect(renderer.column_widths).to eql([2,2]) }
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
              it { expect(renderer.column_aligns).to eql(aligns) }
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
              it { expect(renderer.column_aligns.to_a).to be_empty }
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
              context '#column_widths' do
         
     | 
| 
       30 
     | 
    
         
            -
                let(:widths) { [10, 10] }
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                it { expect(renderer.column_widths).to eq(widths) }
         
     | 
| 
       33 
     | 
    
         
            -
              end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
              context '#column_widths empty' do
         
     | 
| 
       36 
     | 
    
         
            -
                let(:widths) { [] }
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                it { expect { renderer.column_widths }.to raise_error(TTY::InvalidArgument) }
         
     | 
| 
       39 
     | 
    
         
            -
              end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
              context '#column_aligns' do
         
     | 
| 
       42 
     | 
    
         
            -
                let(:aligns) { [:center, :center] }
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                it 'unwraps original array' do
         
     | 
| 
       45 
     | 
    
         
            -
                  expect(renderer.column_aligns.to_a).to eq(aligns)
         
     | 
| 
       46 
     | 
    
         
            -
                end
         
     | 
| 
       47 
     | 
    
         
            -
              end
         
     | 
| 
       48 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,52 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'spec_helper'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            describe TTY::Table::Renderer::Basic, 'padding' do
         
     | 
| 
       6 
     | 
    
         
            -
              let(:header) { ['Field', 'Type', 'Null', 'Key', 'Default', 'Extra'] }
         
     | 
| 
       7 
     | 
    
         
            -
              let(:rows)   { [['id', 'int(11)', 'YES', 'nil', 'NULL', '']] }
         
     | 
| 
       8 
     | 
    
         
            -
              let(:table)  { TTY::Table.new(header, rows) }
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              subject(:renderer) { described_class.new(table, options) }
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
              context 'with left & right padding' do
         
     | 
| 
       13 
     | 
    
         
            -
                let(:options) { {padding: [0,1,0,1]} }
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                it 'pads each field' do
         
     | 
| 
       16 
     | 
    
         
            -
                  expect(renderer.render).to eql <<-EOS.chomp
         
     | 
| 
       17 
     | 
    
         
            -
             Field   Type      Null   Key   Default   Extra 
         
     | 
| 
       18 
     | 
    
         
            -
             id      int(11)   YES    nil   NULL            
         
     | 
| 
       19 
     | 
    
         
            -
                  EOS
         
     | 
| 
       20 
     | 
    
         
            -
                end
         
     | 
| 
       21 
     | 
    
         
            -
              end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
              context 'with top & bottom padding' do
         
     | 
| 
       24 
     | 
    
         
            -
                let(:options) { {padding: [1,0,1,0], multiline: true} }
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                it 'pads each field' do
         
     | 
| 
       27 
     | 
    
         
            -
                  expect(renderer.render).to eql <<-EOS.chomp
         
     | 
| 
       28 
     | 
    
         
            -
                                                
         
     | 
| 
       29 
     | 
    
         
            -
            Field Type    Null Key Default Extra
         
     | 
| 
       30 
     | 
    
         
            -
                                                
         
     | 
| 
       31 
     | 
    
         
            -
                                                
         
     | 
| 
       32 
     | 
    
         
            -
            id    int(11) YES  nil NULL         
         
     | 
| 
       33 
     | 
    
         
            -
                                                
         
     | 
| 
       34 
     | 
    
         
            -
            EOS
         
     | 
| 
       35 
     | 
    
         
            -
                end
         
     | 
| 
       36 
     | 
    
         
            -
              end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
              context 'with full padding' do
         
     | 
| 
       39 
     | 
    
         
            -
                let(:options) { {padding: [1,1,1,1], multiline: true} }
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                it 'pads each field' do
         
     | 
| 
       42 
     | 
    
         
            -
                  expect(renderer.render).to eql <<-EOS.chomp
         
     | 
| 
       43 
     | 
    
         
            -
                                                            
         
     | 
| 
       44 
     | 
    
         
            -
             Field   Type      Null   Key   Default   Extra 
         
     | 
| 
       45 
     | 
    
         
            -
                                                            
         
     | 
| 
       46 
     | 
    
         
            -
                                                            
         
     | 
| 
       47 
     | 
    
         
            -
             id      int(11)   YES    nil   NULL            
         
     | 
| 
       48 
     | 
    
         
            -
                                                            
         
     | 
| 
       49 
     | 
    
         
            -
                  EOS
         
     | 
| 
       50 
     | 
    
         
            -
                end
         
     | 
| 
       51 
     | 
    
         
            -
              end
         
     | 
| 
       52 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,57 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'spec_helper'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            describe TTY::Table::Renderer::Basic, '#render' do
         
     | 
| 
       6 
     | 
    
         
            -
              let(:header) { ['h1', 'h2', 'h3'] }
         
     | 
| 
       7 
     | 
    
         
            -
              let(:rows)   { [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']] }
         
     | 
| 
       8 
     | 
    
         
            -
              let(:table)  { TTY::Table.new header, rows }
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              subject(:renderer) { described_class.new(table) }
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
              context 'with rows' do
         
     | 
| 
       13 
     | 
    
         
            -
                let(:table) { TTY::Table.new rows }
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                it 'displays table without styling' do
         
     | 
| 
       16 
     | 
    
         
            -
                  expect(renderer.render).to eq <<-EOS.normalize
         
     | 
| 
       17 
     | 
    
         
            -
                    a1 a2 a3
         
     | 
| 
       18 
     | 
    
         
            -
                    b1 b2 b3
         
     | 
| 
       19 
     | 
    
         
            -
                  EOS
         
     | 
| 
       20 
     | 
    
         
            -
                end
         
     | 
| 
       21 
     | 
    
         
            -
              end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
              context 'with header and rows' do
         
     | 
| 
       24 
     | 
    
         
            -
                it 'displays table with header' do
         
     | 
| 
       25 
     | 
    
         
            -
                  expect(renderer.render).to eq <<-EOS.normalize
         
     | 
| 
       26 
     | 
    
         
            -
                    h1 h2 h3
         
     | 
| 
       27 
     | 
    
         
            -
                    a1 a2 a3
         
     | 
| 
       28 
     | 
    
         
            -
                    b1 b2 b3
         
     | 
| 
       29 
     | 
    
         
            -
                  EOS
         
     | 
| 
       30 
     | 
    
         
            -
                end
         
     | 
| 
       31 
     | 
    
         
            -
              end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
              context 'with short header' do
         
     | 
| 
       34 
     | 
    
         
            -
                let(:header) { ['h1', 'h2'] }
         
     | 
| 
       35 
     | 
    
         
            -
                let(:rows)   { [['aaa1', 'a2'], ['b1', 'bb1']] }
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                it 'displays table according to widths' do
         
     | 
| 
       38 
     | 
    
         
            -
                  expect(renderer.render).to eq <<-EOS.normalize
         
     | 
| 
       39 
     | 
    
         
            -
                    h1   h2 
         
     | 
| 
       40 
     | 
    
         
            -
                    aaa1 a2 
         
     | 
| 
       41 
     | 
    
         
            -
                    b1   bb1
         
     | 
| 
       42 
     | 
    
         
            -
                  EOS
         
     | 
| 
       43 
     | 
    
         
            -
                end
         
     | 
| 
       44 
     | 
    
         
            -
              end
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
              context 'with long header' do
         
     | 
| 
       47 
     | 
    
         
            -
                let(:header)  { ['header1', 'header2', 'header3'] }
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
                it 'header greater than row sizes' do
         
     | 
| 
       50 
     | 
    
         
            -
                  expect(renderer.render).to eq <<-EOS.normalize
         
     | 
| 
       51 
     | 
    
         
            -
                    header1 header2 header3
         
     | 
| 
       52 
     | 
    
         
            -
                    a1      a2      a3     
         
     | 
| 
       53 
     | 
    
         
            -
                    b1      b2      b3     
         
     | 
| 
       54 
     | 
    
         
            -
                  EOS
         
     | 
| 
       55 
     | 
    
         
            -
                end
         
     | 
| 
       56 
     | 
    
         
            -
              end
         
     | 
| 
       57 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,96 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'spec_helper'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            describe TTY::Table::Renderer::Basic, 'resizing' do
         
     | 
| 
       6 
     | 
    
         
            -
              let(:header)  { ['h1', 'h2', 'h3'] }
         
     | 
| 
       7 
     | 
    
         
            -
              let(:rows)    { [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']] }
         
     | 
| 
       8 
     | 
    
         
            -
              let(:table)   { TTY::Table.new(header, rows) }
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              subject(:renderer) { described_class.new(table, options) }
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
              context 'when expanding' do
         
     | 
| 
       13 
     | 
    
         
            -
                context 'even columns' do
         
     | 
| 
       14 
     | 
    
         
            -
                  let(:options) { {width: 16, resize: true} }
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                  it 'resizes each column' do
         
     | 
| 
       17 
     | 
    
         
            -
                    expect(renderer.render).to eql <<-EOS.normalize
         
     | 
| 
       18 
     | 
    
         
            -
                      h1    h2    h3  
         
     | 
| 
       19 
     | 
    
         
            -
                      a1    a2    a3  
         
     | 
| 
       20 
     | 
    
         
            -
                      b1    b2    b3  
         
     | 
| 
       21 
     | 
    
         
            -
                    EOS
         
     | 
| 
       22 
     | 
    
         
            -
                  end
         
     | 
| 
       23 
     | 
    
         
            -
                end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                context 'even columns with extra width' do
         
     | 
| 
       26 
     | 
    
         
            -
                  let(:header)  { ['h1', 'h2', 'h3', 'h4'] }
         
     | 
| 
       27 
     | 
    
         
            -
                  let(:rows)    { [['a1','a2','a3','a4'], ['b1','b2','b3','b4']] }
         
     | 
| 
       28 
     | 
    
         
            -
                  let(:options) { {width: 21, resize: true} }
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                  it 'resizes each column' do
         
     | 
| 
       31 
     | 
    
         
            -
                    expect(renderer.render).to eql <<-EOS.normalize
         
     | 
| 
       32 
     | 
    
         
            -
                      h1    h2    h3   h4  
         
     | 
| 
       33 
     | 
    
         
            -
                      a1    a2    a3   a4  
         
     | 
| 
       34 
     | 
    
         
            -
                      b1    b2    b3   b4  
         
     | 
| 
       35 
     | 
    
         
            -
                    EOS
         
     | 
| 
       36 
     | 
    
         
            -
                  end
         
     | 
| 
       37 
     | 
    
         
            -
                end
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                context 'uneven columns' do
         
     | 
| 
       40 
     | 
    
         
            -
                  let(:header)  { ['h1', 'h2', 'h3'] }
         
     | 
| 
       41 
     | 
    
         
            -
                  let(:rows)    { [['aaa1', 'aa2', 'aaaaaaa3'], ['b1', 'b2', 'b3']] }
         
     | 
| 
       42 
     | 
    
         
            -
                  let(:options) { {width: 32, resize: true} }
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                  it 'resizes each column' do
         
     | 
| 
       45 
     | 
    
         
            -
                    expect(renderer.render).to eql <<-EOS.normalize
         
     | 
| 
       46 
     | 
    
         
            -
                      h1        h2       h3           
         
     | 
| 
       47 
     | 
    
         
            -
                      aaa1      aa2      aaaaaaa3     
         
     | 
| 
       48 
     | 
    
         
            -
                      b1        b2       b3           
         
     | 
| 
       49 
     | 
    
         
            -
                    EOS
         
     | 
| 
       50 
     | 
    
         
            -
                  end
         
     | 
| 
       51 
     | 
    
         
            -
                end
         
     | 
| 
       52 
     | 
    
         
            -
              end
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
              context 'when shrinking' do
         
     | 
| 
       55 
     | 
    
         
            -
                let(:header)  { ['head1', 'head2'] }
         
     | 
| 
       56 
     | 
    
         
            -
                let(:rows)    { [['aaaa1','aaaa2',], ['bbbb1','bbbb2']] }
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                context 'even columns' do
         
     | 
| 
       59 
     | 
    
         
            -
                  let(:options) { {width: 7, resize: true} }
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
                  it 'resizes each column' do
         
     | 
| 
       62 
     | 
    
         
            -
                    expect(renderer.render).to eql <<-EOS.normalize
         
     | 
| 
       63 
     | 
    
         
            -
                      he… he…
         
     | 
| 
       64 
     | 
    
         
            -
                      aa… aa…
         
     | 
| 
       65 
     | 
    
         
            -
                      bb… bb…
         
     | 
| 
       66 
     | 
    
         
            -
                    EOS
         
     | 
| 
       67 
     | 
    
         
            -
                  end
         
     | 
| 
       68 
     | 
    
         
            -
                end
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
                context 'even columns with extra width' do
         
     | 
| 
       71 
     | 
    
         
            -
                  let(:options) { {width: 8, resize: true} }
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
                  it 'resizes each column' do
         
     | 
| 
       74 
     | 
    
         
            -
                    expect(renderer.render).to eql <<-EOS.normalize
         
     | 
| 
       75 
     | 
    
         
            -
                      hea… he…
         
     | 
| 
       76 
     | 
    
         
            -
                      aaa… aa…
         
     | 
| 
       77 
     | 
    
         
            -
                      bbb… bb…
         
     | 
| 
       78 
     | 
    
         
            -
                    EOS
         
     | 
| 
       79 
     | 
    
         
            -
                  end
         
     | 
| 
       80 
     | 
    
         
            -
                end
         
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
                context 'uneven columns' do
         
     | 
| 
       83 
     | 
    
         
            -
                  let(:header)  { ['head1', 'head2', 'head3'] }
         
     | 
| 
       84 
     | 
    
         
            -
                  let(:rows)    { [['aaa1', 'aa2', 'aaaaaaa3'], ['b1', 'b2', 'b3']] }
         
     | 
| 
       85 
     | 
    
         
            -
                  let(:options) { {width: 15, resize: true} }
         
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
                  it 'resizes each column' do
         
     | 
| 
       88 
     | 
    
         
            -
                    expect(renderer.render).to eql <<-EOS.normalize
         
     | 
| 
       89 
     | 
    
         
            -
                      hea… he… head3 
         
     | 
| 
       90 
     | 
    
         
            -
                      aaa1 aa2 aaaaa…
         
     | 
| 
       91 
     | 
    
         
            -
                      b1   b2  b3    
         
     | 
| 
       92 
     | 
    
         
            -
                    EOS
         
     | 
| 
       93 
     | 
    
         
            -
                  end
         
     | 
| 
       94 
     | 
    
         
            -
                end
         
     | 
| 
       95 
     | 
    
         
            -
              end
         
     | 
| 
       96 
     | 
    
         
            -
            end
         
     |