ttable 0.0.8 → 0.0.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 829caabb9f6ecd7558801ce9018bb718b782a761
4
- data.tar.gz: 13c4d80c988f1e6540a36680a202762fc44bb5c5
3
+ metadata.gz: d8ae3e64a798e07f32c13402a936e74a529f1427
4
+ data.tar.gz: a54686e3897e2ec48ae70b6a05614121655c6aaf
5
5
  SHA512:
6
- metadata.gz: 3ee3b47945d736053de60e3e85e9d89d0f1fdacf8805a664ffc1ed5d56f108fc3a093af66b48a4fce39df1ece39a2272d49275f3b20b93bcdcdd63037003d4b6
7
- data.tar.gz: 89fce1106da7dcd7813942f308b1932b803d995d0cfcec999dc47b4a1ac6f735ed83cfe84d3b03b954b27f56d92bd0dfe6e575511da9e2c0c2c9416ead69844d
6
+ metadata.gz: 4078a2f5bf58bdeda5756332cd96066f8ebc5360a15ad25c4c3f52611eb977dff5f718e71d71e27d84391d5fe730c7cc477cd1096b95d6882650f9a3b018986d
7
+ data.tar.gz: b432e8888c40e2ac345aef905a7c6b3268796ff734160f6ea09e523d2504098dbb5919754a3b81f32b44774e2cd0e9ad787d27be88930f897c47e445baae9c0b
@@ -1,5 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 2.0.0
4
+ - jruby-1.7.16
4
5
  script: bundle exec rspec
5
6
  gemfile: Gemfile.ci
data/README.md CHANGED
@@ -27,15 +27,90 @@ Or install it yourself as:
27
27
 
28
28
  ## Usage
29
29
 
30
- TODO: Write usage instructions here
30
+ Supports array of array:
31
31
 
32
- ## TODO
32
+ ```ruby
33
+ puts Terminal::Table.new([%w{ hello 1 }, %w{ world 2 }])
34
+ =>
35
+ +-------+---+
36
+ | hello | 1 |
37
+ | world | 2 |
38
+ +-------+---+
39
+ ```
40
+
41
+ Supports hash:
42
+
43
+ ```ruby
44
+ puts Terminal::Table.new({ foo: 'bar' })
45
+ =>
46
+ +-----+
47
+ | foo |
48
+ +-----+
49
+ | bar |
50
+ +-----+
51
+ ```
52
+
53
+ Support array of hash:
54
+
55
+ ```ruby
56
+ puts Terminal::Table.new([{ foo: 'bar1' }, { foo: 'bar2' }])
57
+ =>
58
+ +------+
59
+ | foo |
60
+ +------+
61
+ | bar1 |
62
+ | bar2 |
63
+ +------+
64
+ ```
65
+
66
+ Support display of objects responds_to `#to_hash`:
67
+
68
+ ```ruby
69
+ class Dummy
70
+ attr_accessor :foo
71
+
72
+ def to_hash
73
+ { foo: @foo }
74
+ end
75
+ end
76
+
77
+ puts Terminal::Table.new(Dummy.new.tap { |d| d.foo = 'bar' })
78
+ =>
79
+ +-----+
80
+ | foo |
81
+ +-----+
82
+ | bar |
83
+ +-----+
84
+ ```
85
+
86
+ Support :only and :except option:
87
+
88
+ ```ruby
89
+ class Dummy2
90
+ attr_accessor :foo1, :foo2, :foo3
91
+
92
+ def to_hash
93
+ { foo1: @foo1, foo2: @foo2, foo3: @foo3 }
94
+ end
95
+ end
96
+
97
+ object = Dummy2.new.tap { |d| d.foo1 = 'bar1'; d.foo2 = 'bar2'; d.foo3 = 'bar3' }
98
+ puts Terminal::Table.new(object, only: %w{ foo1 foo2 })
99
+ =>
100
+ +------+------+
101
+ | foo1 | foo2 |
102
+ +------+------+
103
+ | bar1 | bar2 |
104
+ +------+------+
105
+ ```
106
+
107
+ ## Credits
33
108
 
34
- - handle new lines properly
109
+ - [terminal-table gem](https://github.com/tj/terminal-table)
35
110
 
36
111
  ## Contributing
37
112
 
38
- 1. Fork it ( https://github.com/[my-github-username]/ttable/fork )
113
+ 1. Fork it ( https://github.com/forresty/ttable/fork )
39
114
  2. Create your feature branch (`git checkout -b my-new-feature`)
40
115
  3. Commit your changes (`git commit -am 'Add some feature'`)
41
116
  4. Push to the branch (`git push origin my-new-feature`)
@@ -3,24 +3,51 @@
3
3
  require "gemoji"
4
4
 
5
5
  class String
6
+ CHARS_OF_WIDTH_OF_2 = %w{ }
7
+ CHARS_OF_WIDTH_OF_1 = %w{ ě ì • é · ♪ … ω ˊ ˋ √ “ ” ☻ ※ ◎ ◆ ‘ ★ ’ — ° ʖ ¯ ≥ ≤
8
+ ≧ ∇ ≦  ❤ ☺ ╭ ╯ ε ╰ ╮ з ∠ → ☞ ë ϵ Θ ϶ Ο Ι ⏎ ← ¥ ó ˶ ˵ ╥ ⊙ ☁ ▽ ⬇ ✌ ‾ ♚ ☀ ℃ Д
9
+ ↓  ● ´ ☆ ・ _ ᵌ ∀ ノ Н а т ш △  ಠ ಥ ʕ ʔ ᴥ ୧ ◡ ୨ ๑ ƪ ˘ ₀ ᵒ ٩ ۶ ∮ ∧ ʚ Ծ ‸ Ï ♡
10
+ □ ¦ ┮ ┭ ✿ }
11
+ CHARS_OF_WIDTH_OF_0 = %w{ ͡ ͜ ̫ ᷄ }
12
+ CHAR_CODES_OF_WIDTH_0 = %w{ 8411 776 8409 8408 809 804 785 2370 820 822 823 769 800 768 805 }
13
+ CHAR_CODES_OF_WIDTH_1 = %w{ 8203 }
14
+
15
+ MULTI_CHAR_OF_WIDTH_1 = %w{ ☺️ ❤️ ♍️ ☔️ ‾᷄ ‾᷅ ⁻̫ ✖️ 😂 ☀︎ ❓ ⁉️ ☁︎ }
16
+ MULTI_CHAR_OF_WIDTH_2 = %w{ ・᷄ ・᷅ }
17
+
6
18
  def twidth
7
19
  result = 0
8
20
 
9
- %w{ ☺️ ❤️ ♍️ ☔️ }.each do |c|
21
+ MULTI_CHAR_OF_WIDTH_1.each do |c|
10
22
  if include?(c)
11
23
  result += 1 * scan(c).size
12
24
  gsub!(c, '')
13
25
  end
14
26
  end
15
27
 
28
+ MULTI_CHAR_OF_WIDTH_2.each do |c|
29
+ if include?(c)
30
+ result += 2 * scan(c).size
31
+ gsub!(c, '')
32
+ end
33
+ end
34
+
16
35
  chars.inject(result) do |result, c|
17
36
  if c.ord <= 126
18
37
  result += 1
19
- elsif %w{ ͡ ͜ }.include?(c)
38
+ elsif CHAR_CODES_OF_WIDTH_0.find { |code| c.ord.to_s == code }
39
+ # zero width
40
+ result += 0
41
+ elsif CHAR_CODES_OF_WIDTH_1.find { |code| c.ord.to_s == code }
42
+ # zero width
43
+ result += 1
44
+ elsif CHARS_OF_WIDTH_OF_0.include?(c)
20
45
  # zero width
21
46
  result += 0
22
- elsif %w{ ě ì • é · ♪ … ω ˊ ˋ √ “ ” ☻ ※ ◎ ◆ ‘ ★ ’ — ° ʖ ¯ ≥ ≤ ≧ ∇ ≦  ❤ ☺ ╭ ╯ ε ╰ ╮ з ∠ → ☞ ë ϵ Θ ϶ Ο Ι }.include?(c)
47
+ elsif CHARS_OF_WIDTH_OF_1.include?(c)
23
48
  result += 1
49
+ elsif CHARS_OF_WIDTH_OF_2.include?(c)
50
+ result += 2
24
51
  elsif c == ' ' # ord == 8198
25
52
  result += 1
26
53
  elsif Emoji.find_by_unicode(c)
@@ -45,11 +72,19 @@ module Terminal
45
72
  attr_accessor :rows
46
73
  attr_accessor :headings
47
74
  attr_accessor :column_widths
75
+ attr_accessor :new_line_symbol
48
76
 
49
77
  def initialize(object = nil, options = {})
50
78
  @rows = []
51
79
  @headings = []
52
80
  @column_widths = []
81
+
82
+ if options[:use_new_line_symbol]
83
+ @new_line_symbol = '⏎'
84
+ else
85
+ @new_line_symbol = ' '
86
+ end
87
+
53
88
  if object
54
89
  if object.is_a?(Hash)
55
90
  add_hash(object, options)
@@ -88,7 +123,7 @@ module Terminal
88
123
  end
89
124
 
90
125
  def recalculate_column_widths!
91
- @rows = rows.map { |row| row.map { |item| item.to_s.gsub("\r\n", " ").gsub("\n", " ").gsub("\r", " ") } }
126
+ @rows = rows.map { |row| row.map { |item| item.to_s.gsub("\r\n", @new_line_symbol).gsub("\n", @new_line_symbol).gsub("\r", @new_line_symbol) } }
92
127
 
93
128
  if @rows.count > 0
94
129
  (0...@rows.first.size).each do |col|
@@ -128,5 +163,11 @@ module Terminal
128
163
 
129
164
  result + header_and_footer
130
165
  end
166
+
167
+ class << self
168
+ def special_tokens
169
+ String::CHARS_OF_WIDTH_OF_1 + String::CHARS_OF_WIDTH_OF_0
170
+ end
171
+ end
131
172
  end
132
173
  end
@@ -1,5 +1,5 @@
1
1
  module Terminal
2
2
  class Table
3
- VERSION = '0.0.8'
3
+ VERSION = '0.0.10'
4
4
  end
5
5
  end
@@ -20,6 +20,11 @@ end
20
20
 
21
21
  module Terminal
22
22
  describe Table do
23
+ describe 'class methods' do
24
+ subject { Table }
25
+ it { should respond_to :special_tokens }
26
+ end
27
+
23
28
  it { should respond_to :to_s }
24
29
 
25
30
  describe 'initialize with array of array' do
@@ -179,6 +184,17 @@ END
179
184
  its(:to_s) { should == expected.gsub(/^(\s+)/, '') }
180
185
  end
181
186
 
187
+ context 'new line symbol' do
188
+ subject { Table.new(nil, use_new_line_symbol: true).tap { |t| t.rows = [["a\rb"]] } }
189
+
190
+ expected = <<END
191
+ +-----+
192
+ | a⏎b |
193
+ +-----+
194
+ END
195
+ its(:to_s) { should == expected.gsub(/^(\s+)/, '') }
196
+ end
197
+
182
198
  context 'mutli calls to <<' do
183
199
  it 'works as well' do
184
200
  table = Table.new
@@ -407,5 +423,400 @@ describe String do
407
423
  subject { 'にΟΙ' }
408
424
  its(:twidth) { should == 4 }
409
425
  end
426
+
427
+ context ' ̫' do
428
+ subject { ' ̫' }
429
+ its(:twidth) { should == 1 }
430
+ end
431
+
432
+ context ' ' do
433
+ subject { ' ' }
434
+ its(:twidth) { should == 2 }
435
+ end
436
+
437
+ context '←' do
438
+ subject { '←' }
439
+ its(:twidth) { should == 1 }
440
+ end
441
+
442
+ context '¥' do
443
+ subject { '¥' }
444
+ its(:twidth) { should == 1 }
445
+ end
446
+
447
+ context 'ó' do
448
+ subject { 'ó' }
449
+ its(:twidth) { should == 1 }
450
+ end
451
+
452
+ context '(˶‾᷄ ⁻̫ ‾᷅˵)' do
453
+ subject { '(˶‾᷄ ⁻̫ ‾᷅˵)' }
454
+ its(:twidth) { should == 9 }
455
+ end
456
+
457
+ context '╥' do
458
+ subject { '╥' }
459
+ its(:twidth) { should == 1 }
460
+ end
461
+
462
+ context '⊙' do
463
+ subject { '⊙' }
464
+ its(:twidth) { should == 1 }
465
+ end
466
+
467
+ context '(。・ω・。)ノ♡' do
468
+ pending 'not finished yet'
469
+ end
470
+
471
+ context '' do
472
+ subject { '' }
473
+ its(:twidth) { should == 1 }
474
+ end
475
+
476
+ context '👋' do
477
+ subject { '👋' }
478
+ its(:twidth) { should == 1 }
479
+ end
480
+
481
+ context '↓↓' do
482
+ subject { '↓↓' }
483
+ its(:twidth) { should == 2 }
484
+ end
485
+
486
+ context '℃' do
487
+ subject { '℃' }
488
+ its(:twidth) { should == 1 }
489
+ end
490
+
491
+ context '(●✿∀✿●)' do
492
+ subject { '(●✿∀✿●)' }
493
+ its(:twidth) { should == 7 }
494
+ end
495
+
496
+ context 'Д' do
497
+ subject { 'Д' }
498
+ its(:twidth) { should == 1 }
499
+ end
500
+
501
+ context '(´•̥̥̥ω•̥̥̥`)' do
502
+ pending
503
+ end
504
+
505
+ context ' ᷄' do
506
+ subject { ' ᷄' }
507
+ its(:twidth) { should == 1 }
508
+ end
509
+
510
+ context '‾' do
511
+ subject { '‾' }
512
+ its(:twidth) { should == 1 }
513
+ end
514
+
515
+ context '༼蛇精༽༄ ' do
516
+ pending
517
+ end
518
+
519
+ context '✌' do
520
+ subject { '✌' }
521
+ its(:twidth) { should == 1 }
522
+ end
523
+
524
+ context '(´Д` )' do
525
+ subject { '(´Д` )' }
526
+ its(:twidth) { should == 6 }
527
+ end
528
+
529
+ context '゜∀)ノ' do
530
+ subject { '゜∀)ノ' }
531
+ its(:twidth) { should == 6 }
532
+ end
533
+
534
+ context '⬇⬇⬇⬇' do
535
+ subject { '⬇⬇⬇⬇' }
536
+ its(:twidth) { should == 4 }
537
+ end
538
+
539
+ context 'ヽ(#`Д´)ノ' do
540
+ subject { 'ヽ(#`Д´)ノ' }
541
+ its(:twidth) { should == 9 }
542
+ end
543
+
544
+ context '~٩(๑ᵒ̴̶̷͈᷄ᗨᵒ̴̶̷͈᷅)و' do
545
+ pending
546
+ end
547
+
548
+ context '😂' do
549
+ subject { '😂' }
550
+ its(:twidth) { should == 1 }
551
+ end
552
+
553
+ context '⊙▽⊙' do
554
+ subject { '⊙▽⊙' }
555
+ its(:twidth) { should == 3 }
556
+ end
557
+
558
+ context '✖️✖️' do
559
+ subject { '✖️✖️' }
560
+ its(:twidth) { should == 2 }
561
+ end
562
+
563
+ context '☁' do
564
+ subject { '☁' }
565
+ its(:twidth) { should == 1 }
566
+ end
567
+
568
+ context '( ・᷄ ᵌ・᷅ )' do
569
+ subject { '( ・᷄ ᵌ・᷅ )' }
570
+ its(:twidth) { should == 10 }
571
+ end
572
+
573
+ context '(☆_☆)Y(^_^)Y ♪─O(≧∇≦)O─♪' do
574
+ pending
575
+ end
576
+
577
+ context '12~★ 今天新换的 (๑¯ิε ¯ิ๑)' do
578
+ pending
579
+ end
580
+
581
+ context '☀' do
582
+ subject { '☀' }
583
+ its(:twidth) { should == 1 }
584
+ end
585
+
586
+ context '☀︎' do
587
+ subject { '☀︎' }
588
+ its(:twidth) { should == 1 }
589
+ end
590
+
591
+ context '(´・_・`)' do
592
+ subject { '(´・_・`)' }
593
+ its(:twidth) { should == 7 }
594
+ end
595
+
596
+ context '୧⃛(๑⃙⃘◡̈๑⃙⃘)୨⃛' do
597
+ subject { '୧⃛(๑⃙⃘◡̈๑⃙⃘)୨⃛' }
598
+ its(:twidth) { should == 7 }
599
+ end
600
+
601
+ context '❓⁉️' do
602
+ subject { '❓⁉️' }
603
+ its(:twidth) { should == 2 }
604
+ end
605
+
606
+ context '⬇️⬇️⬇️⬇️⬇️…🌚!!!😰😤😤' do
607
+ pending
608
+ end
609
+
610
+ context '!' do
611
+ subject { '!' }
612
+ its(:twidth) { should == 2 }
613
+ end
614
+
615
+ context '~' do
616
+ subject { '~' }
617
+ its(:twidth) { should == 2 }
618
+ end
619
+
620
+ context '(˘̩̩̩ε˘̩ƪ)' do
621
+ subject { '(˘̩̩̩ε˘̩ƪ)' }
622
+ its(:twidth) { should == 6 }
623
+ end
624
+
625
+ context 'ʕ •ᴥ•ʔ' do
626
+ subject { 'ʕ •ᴥ•ʔ' }
627
+ its(:twidth) { should == 6 }
628
+ end
629
+
630
+ context '´●_●`' do
631
+ subject { '´●_●`' }
632
+ its(:twidth) { should == 6 }
633
+ end
634
+
635
+ context '_' do
636
+ subject { '_' }
637
+ its(:twidth) { should == 2 }
638
+ end
639
+
640
+ context '`' do
641
+ subject { '`' }
642
+ its(:twidth) { should == 1 }
643
+ end
644
+
645
+ context '´' do
646
+ subject { '´' }
647
+ its(:twidth) { should == 1 }
648
+ end
649
+
650
+ context '☆ゝ' do
651
+ subject { '☆ゝ' }
652
+ its(:twidth) { should == 3 }
653
+ end
654
+
655
+ context '(͏ ˉ ꈊ ˉ)✧˖°' do
656
+ pending
657
+ end
658
+
659
+ context '₍₍ (̨̡ ᗣ )̧̢ ₎₎' do
660
+ pending
661
+ end
662
+
663
+ context '♚' do
664
+ subject { '♚' }
665
+ its(:twidth) { should == 1 }
666
+ end
667
+
668
+ context '(●°u°●)​ 」' do
669
+ subject { '(●°u°●)​ 」' }
670
+ its(:twidth) { should == 11 }
671
+ end
672
+
673
+ context '」' do
674
+ subject { '」' }
675
+ its(:twidth) { should == 2 }
676
+ end
677
+
678
+ context '​​' do
679
+ subject { '​' } # 8203
680
+ its(:twidth) { should == 1 }
681
+ end
682
+
683
+ context 'ಥ_ಥ' do
684
+ subject { 'ಥ_ಥ' }
685
+ its(:twidth) { should == 3 }
686
+ end
687
+
688
+ context '♪٩(´▽`๑)۶ ' do
689
+ subject { '♪٩(´▽`๑)۶ ' }
690
+ its(:twidth) { should == 11 }
691
+ end
692
+
693
+ context 'ಠ_ಠ' do
694
+ subject { 'ಠ_ಠ' }
695
+ its(:twidth) { should == 3 }
696
+ end
697
+
698
+ context '(ᵒ̤̑ ₀̑ ᵒ̤̑)' do
699
+ subject { '(ᵒ̤̑ ₀̑ ᵒ̤̑)' }
700
+ its(:twidth) { should == 7 }
701
+ end
702
+
703
+ context '눈_눈' do
704
+ subject { '눈_눈' }
705
+ its(:twidth) { should == 5 }
706
+ end
707
+
708
+ context '' do
709
+ subject { '' }
710
+ its(:twidth) { should == 1 }
711
+ end
712
+
713
+ context '((((;゚Д゚)))))))' do
714
+ pending
715
+ end
716
+
717
+ context '(∮∧∮)' do
718
+ subject { '(∮∧∮)' }
719
+ its(:twidth) { should == 7 }
720
+ end
721
+
722
+ context 'ヽ( ̄д ̄;)ノ' do
723
+ pending
724
+ end
725
+
726
+ context '(Ծ‸ Ծ )' do
727
+ subject { '(Ծ‸ Ծ )' }
728
+ its(:twidth) { should == 7 }
729
+ end
730
+
731
+ context '(۶ૈ ۜ ᵒ̌▱๋ᵒ̌ )۶ૈ=͟͟͞͞ ⌨' do
732
+ pending
733
+ end
734
+
735
+ context '(๑˃̵ᴗ˂̵)و ' do
736
+ pending
737
+ end
738
+
739
+ context '嘤ू(ʚ̴̶̷́ .̠ ʚ̴̶̷̥̀ ू) ' do
740
+ subject { '嘤ू(ʚ̴̶̷́ .̠ ʚ̴̶̷̥̀ ू) ' }
741
+ its(:twidth) { should == 11 }
742
+ end
743
+
744
+ context '⁽⁽٩(๑˃̶͈̀ ˂̶͈́)۶⁾⁾' do
745
+ pending
746
+ end
747
+
748
+ context '(ᵒ̤̑ ₀̑ ᵒ̤̑)' do
749
+ subject { '(ᵒ̤̑ ₀̑ ᵒ̤̑)' }
750
+ its(:twidth) { should == 7 }
751
+ end
752
+
753
+ context 'AÏcha' do
754
+ subject { 'AÏcha' }
755
+ its(:twidth) { should == 5 }
756
+ end
757
+
758
+ context '(ᵒ̤̑ ₀̑ ᵒ̤̑)' do
759
+ subject { '(ᵒ̤̑ ₀̑ ᵒ̤̑)' }
760
+ its(:twidth) { should == 7 }
761
+ end
762
+
763
+ context '(╯°Д°)╯︵ ┻━┻ ' do
764
+ pending
765
+ end
766
+
767
+ context '┭┮﹏┭┮' do
768
+ subject { '┭┮﹏┭┮' }
769
+ its(:twidth) { should == 6 }
770
+ end
771
+
772
+ context '=△=' do
773
+ subject { '=△=' }
774
+ its(:twidth) { should == 3 }
775
+ end
776
+
777
+ context ' (ؓؒؒؑؑؖؔؓؒؐؐ⁼̴̀ωؘؙؖؕؔؓؒؑؐؕ⁼̴̀ )✧' do
778
+ pending
779
+ end
780
+
781
+ context '(¦3[____]' do
782
+ subject { '(¦3[____]' }
783
+ its(:twidth) { should == 9 }
784
+ end
785
+
786
+ context '( •̥́ ˍ •̀ू )' do
787
+ pending
788
+ end
789
+
790
+ context 'Σ(゚д゚lll) ' do
791
+ pending
792
+ end
793
+
794
+ context '☁︎' do
795
+ subject { '☁︎' }
796
+ its(:twidth) { should == 1 }
797
+ end
798
+
799
+ context '▀ ▄ ‖ █ ‖▌‖' do
800
+ pending
801
+ end
802
+
803
+ context 'にこにー♡' do
804
+ subject { 'にこにー♡' }
805
+ its(:twidth) { should == 9 }
806
+ end
807
+
808
+ context 'Наташа' do
809
+ subject { 'Наташа' }
810
+ its(:twidth) { should == 6 }
811
+ end
812
+
813
+ context '(╯°□°)╯︵' do
814
+ subject { '(╯°□°)╯︵' }
815
+ its(:twidth) { should == 10 }
816
+ end
817
+
818
+ context 'Facebig(((o(*゚▽゚*)o)))' do
819
+ pending
820
+ end
410
821
  end
411
822
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ttable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Forrest Ye
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-18 00:00:00.000000000 Z
11
+ date: 2014-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  version: '0'
97
97
  requirements: []
98
98
  rubyforge_project:
99
- rubygems_version: 2.0.2
99
+ rubygems_version: 2.4.4
100
100
  signing_key:
101
101
  specification_version: 4
102
102
  summary: Terminal Table with @2x width character support