tablesmith 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 422060113ff10de9d77319825d7c0584b1389e3e
4
- data.tar.gz: c2672e0136fe3ccad708644232db70a7f3112ddd
3
+ metadata.gz: a2debe86ed561ee342350d05b984e6519aafff2a
4
+ data.tar.gz: 64ab1246d907cb92b33e18bdf0a66ccea31047a0
5
5
  SHA512:
6
- metadata.gz: 362ffe3c1d3cb37c26a521de9eea14cc4bcfb5ec42534930486d05238ecb2fb1fb90621318eb2bab75d979d9040c274601626a456464317cd6f8e2d7e8f1e340
7
- data.tar.gz: 7df00f39dc421aaa159900710dc2af3de41d4d8805a8936818fbca388d64cf3dca682cbfa08b900d28616cbd9dd10136979dd06d1214bf84a1155fe9fa606280
6
+ metadata.gz: 5b4d1e2f5b10d150d9bb6d28c800030703a35a0a3196c4d941f7ed1e62618dfcadf89f1eaab183049b1f75284e63680ae2517489e26db578c5bc8fe0ffbd0073
7
+ data.tar.gz: ea5238cdeff276b012e3d7cecfbd061b486e5e3eda77e0d0c1adaaff07b7449db17289289ac7301fff132f5d4fe48178201edd2d781d49055889d005c2bafa7c
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tablesmith (0.2.1)
4
+ tablesmith (0.2.2)
5
5
  text-table
6
6
 
7
7
  GEM
@@ -63,4 +63,4 @@ DEPENDENCIES
63
63
  tablesmith!
64
64
 
65
65
  BUNDLED WITH
66
- 1.15.4
66
+ 1.16.0.pre.2
@@ -8,14 +8,6 @@ module Tablesmith::ArrayRowsSource
8
8
  item
9
9
  end
10
10
 
11
- # def flatten_hash_to_row(deep_hash, columns)
12
- # row = ActiveSupport::OrderedHash.new
13
- # columns.each do |col_or_hash|
14
- # value_from_hash(row, deep_hash, col_or_hash)
15
- # end
16
- # row
17
- # end
18
-
19
11
  # TODO: no support for deep
20
12
  def build_columns
21
13
  @columns ||= []
@@ -29,40 +21,4 @@ module Tablesmith::ArrayRowsSource
29
21
  column_names = rows.shift
30
22
  grouped_headers(column_names) + [apply_column_aliases(column_names), :separator]
31
23
  end
32
-
33
- # def value_from_hash(row, deep_hash, col_or_hash)
34
- # case col_or_hash
35
- # when Tablesmith::Column
36
- # row[col_or_hash.display_name] = deep_hash[col_or_hash.name]
37
- # when Hash
38
- # col_or_hash.each_pair do |sub_hash_key, cols_or_hash|
39
- # [cols_or_hash].flatten.each do |inner_col_or_hash|
40
- # value_from_hash(row, deep_hash[sub_hash_key], inner_col_or_hash)
41
- # end
42
- # end
43
- # else
44
- # nil
45
- # end
46
- # rescue => e
47
- # $stderr.puts "#{e.message}: #{col_or_hash}" if @debug
48
- # end
49
-
50
- # def hash_rows_to_text_table(hash_rows)
51
- # require 'text-table'
52
- #
53
- # header_row = hash_rows.first.keys
54
- # table = []
55
- # table << header_row
56
- #
57
- # hash_rows.each do |hash_row|
58
- # row = []
59
- # header_row.each do |header|
60
- # row << hash_row[header]
61
- # end
62
- # table << row
63
- # end
64
- #
65
- # # Array addition from text-table
66
- # table.to_table(:first_row_is_head => true)
67
- # end
68
24
  end
@@ -7,6 +7,7 @@ module Tablesmith::HashRowsBase
7
7
  end
8
8
 
9
9
  def sort_columns(rows)
10
+ return if column_order.empty?
10
11
  rows.map! do |row|
11
12
  # this sort gives preference to column_order then falls back to alphabetic for leftovers.
12
13
  # this is handy when columns auto-generate based on hash data.
@@ -30,7 +30,7 @@ module Tablesmith::HashRowsSource
30
30
  def value_from_hash(row, deep_hash, col_or_hash)
31
31
  case col_or_hash
32
32
  when Tablesmith::Column
33
- row[col_or_hash.display_name] = deep_hash[col_or_hash.name]
33
+ row[col_or_hash.display_name] = deep_hash[col_or_hash.name].to_s
34
34
  when Hash
35
35
  col_or_hash.each_pair do |sub_hash_key, cols_or_hash|
36
36
  [cols_or_hash].flatten.each do |inner_col_or_hash|
@@ -128,6 +128,9 @@ class Array
128
128
  def to_table
129
129
  b = Tablesmith::Table.new(self)
130
130
 
131
+ # TODO: redesign such that every row is reacted to appropriately,
132
+ # so mixed content could be supported. Maybe every cell could be
133
+ # rendered appropriately, with nested tables.
131
134
  if defined?(ActiveRecord) && defined?(ActiveRecord::Base)
132
135
  if b.first && b.first.is_a?(ActiveRecord::Base)
133
136
  b.extend Tablesmith::ActiveRecordSource
@@ -1,3 +1,3 @@
1
1
  module Tablesmith
2
- VERSION = '0.2.1'.freeze
2
+ VERSION = '0.2.2'.freeze
3
3
  end
@@ -12,6 +12,28 @@ describe 'HashRowsSource' do
12
12
  [{a: 1, b: 2}].to_table.text_table.to_s.should == expected
13
13
  end
14
14
 
15
+ it 'outputs text table of hash row with nested Array' do
16
+ expected = <<~TABLE
17
+ +---+--------+
18
+ | a | b |
19
+ +---+--------+
20
+ | 1 | [1, 2] |
21
+ +---+--------+
22
+ TABLE
23
+ [{a: 1, b: [1, 2]}].to_table.text_table.to_s.should == expected
24
+ end
25
+
26
+ it 'outputs text table of hash row with nested Hash' do
27
+ expected = <<~TABLE
28
+ +---+---------+
29
+ | a | b |
30
+ +---+---------+
31
+ | 1 | {:c=>3} |
32
+ +---+---------+
33
+ TABLE
34
+ [{a: 1, b: {c: 3}}].to_table.text_table.to_s.should == expected
35
+ end
36
+
15
37
  it 'outputs text table of mixed columns hash rows with default columns' do
16
38
  expected = <<~TABLE
17
39
  +---+---+---+
@@ -30,9 +52,9 @@ describe 'HashRowsSource' do
30
52
  it 'outputs text table of deep hash rows with defined columns' do
31
53
  expected = <<~TABLE
32
54
  +---+---+---+
33
- | | b |
55
+ | a | b |
34
56
  +---+---+---+
35
- | a | c | d |
57
+ | | c | d |
36
58
  +---+---+---+
37
59
  | 1 | 2 | 2 |
38
60
  +---+---+---+
@@ -46,10 +68,25 @@ describe 'HashRowsSource' do
46
68
  ]}
47
69
  ]
48
70
  end
49
- # this would be nice. Payments has some code along these lines for BraintreeBatch? or some ActiveRecordSource re-use?
71
+
72
+ # this would be nice.
50
73
  # b.text_table.to_s.should == expected
51
74
  pending
52
75
  end
53
76
 
77
+ it 'keeps OrderedHash keys in order' do
78
+ h = ActiveSupport::OrderedHash.new
79
+ h[:z] = 2
80
+ h[:y] = 1
81
+ expected = <<~TABLE
82
+ +---+---+
83
+ | z | y |
84
+ +---+---+
85
+ | 2 | 1 |
86
+ +---+---+
87
+ TABLE
88
+ h.to_table.text_table.to_s.should == expected
89
+ end
90
+
54
91
  it 'outputs text table of deep hash rows with default columns'
55
92
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tablesmith
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - chrismo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-19 00:00:00.000000000 Z
11
+ date: 2017-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: text-table
@@ -159,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
159
  version: '0'
160
160
  requirements: []
161
161
  rubyforge_project:
162
- rubygems_version: 2.5.2
162
+ rubygems_version: 2.6.13
163
163
  signing_key:
164
164
  specification_version: 4
165
165
  summary: Minimal console table