tabulo 0.4.1 → 0.4.2

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: 719b6855766058c0b5086c8d04f8e85b03532fcd
4
- data.tar.gz: ade0250e9e1ae8d136d2863df2a21f8f1efda31e
3
+ metadata.gz: 8e5af752ebead6db9dfc76f720fe93390e1476d8
4
+ data.tar.gz: 3aaeac2dcb657193be54534bac8babbad1cb56d7
5
5
  SHA512:
6
- metadata.gz: ac5a02ca95749e3efcc6209e713b6620aafd416aede395546a45dae337443f932e3f80d7de3084c3f94f8cfed780516892dd54d2a393756a030ccaf6a0eaf8fe
7
- data.tar.gz: 446462cb31aa4547245ba05cbda0ba47260c9809f8c4de35d545080a1c0d407d99d3f016cdbf4d34f83331dec7b2526b7debb987ca464bc8b46adeee075761ec
6
+ metadata.gz: 1227ced88276ad18ac557b66c2bf9db675dba4b9061797c7ddf9432b14c7882eb025b6b126bfa833dd15f92bd6421e42481bed5b858f369ac8c48e811a2da544
7
+ data.tar.gz: 9f68e39a20c006414d65d0239188df0ae66eb912e9e99de51ea310636d15cf2a9b0038819bbcae39f9b26982ae5f69ddcf1e410efc13cdd2c1d91cb487fbd858
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.4.2
4
+
5
+ * Improve README.
6
+ * Fix error when printing a Table, or a Row thereof, when the Table doesn't
7
+ have any columns.
8
+ * Remove unused development dependency on yard-tomdoc.
9
+ * Write more specs.
10
+
3
11
  ## v0.4.1
4
12
 
5
13
  * Update README to reflect default column width of 12.
data/README.md CHANGED
@@ -40,8 +40,7 @@ Each `Tabulo::Row` is also an `Enumerable`, which provides access to the underly
40
40
  ```ruby
41
41
  table.each do |row|
42
42
  row.each do |cell|
43
- # 1, 2, 50000000...
44
- puts cell.class # Fixnum
43
+ # cell => 1, 2... 2, 4... etc.
45
44
  end
46
45
  end
47
46
  ```
@@ -138,17 +137,29 @@ the `align_header` or `align_body` options of `add_column`, e.g.:
138
137
  ### Column width, wrapping and truncation
139
138
 
140
139
  By default, column width is fixed at 12 characters, plus 1 character of padding on either side.
141
- This can be customized using the `width` option of `add_column`:
140
+ This can be adjusted on a column-by-column basis using the `width` option of `add_column`:
142
141
 
143
142
  ```ruby
144
- table.add_column(:even?, width: 5)
143
+ table = Tabulo::Table.new([1, 2]) do |t|
144
+ t.add_column(:itself, width: 6)
145
+ t.add_column(:even?, width: 9)
146
+ end
147
+ ```
148
+
149
+ ```
150
+ > puts table
151
+ +--------+-----------+
152
+ | itself | even? |
153
+ +--------+-----------+
154
+ | 1 | false |
155
+ | 2 | true |
145
156
  ```
146
157
 
147
158
  If you want to set the default column width for all columns of the table to something other
148
159
  than 12, use the `column_width` option when initializing the table:
149
160
 
150
161
  ```ruby
151
- Tabulo::Table.new([1, 2], columns: %i(itself even?), column_width: 6)
162
+ table = Tabulo::Table.new([1, 2], columns: %i(itself even?), column_width: 6)
152
163
  ```
153
164
 
154
165
  ```
@@ -158,9 +169,9 @@ than 12, use the `column_width` option when initializing the table:
158
169
  +--------+--------+
159
170
  | 1 | false |
160
171
  | 2 | true |
161
- ```
172
+ ```
162
173
 
163
- The widths set for individual columns will override the default column width for the table.
174
+ Widths set for individual columns always override the default column width for the table.
164
175
 
165
176
  ### Overflow handling
166
177
 
@@ -208,6 +219,40 @@ table = Tabulo::Table.new(
208
219
  | abcdefghijkl~| 26 |
209
220
  ```
210
221
 
222
+ ### Formatting cell values
223
+
224
+ While the callable passed to `add_column` determines the underyling, calculated value in each
225
+ cell of the column, there is a separate concept, of a "formatter", that determines how that value will
226
+ be visually displayed. By default, `.to_s` is called on the underlying cell value to "format"
227
+ it; however, you can format it differently by passing another callable to the `formatter` option
228
+ of `add_column`:
229
+
230
+ ```ruby
231
+ table = Tabulo::Table.new(1..3) do |t|
232
+ t.add_column("N", &:itself)
233
+ t.add_column("Reciprocal", formatter: -> (n) { "%.2f" % n }) do |n|
234
+ 1.0 / n
235
+ end
236
+ end
237
+ ```
238
+
239
+ ```
240
+ puts table
241
+ +--------------+--------------+
242
+ | N | Reciprocal |
243
+ +--------------+--------------+
244
+ | 1 | 1.00 |
245
+ | 2 | 0.50 |
246
+ | 3 | 0.33 |
247
+ ```
248
+
249
+ Note the numbers in the "Reciprocal" column in this example are still right-aligned, even though
250
+ the callable passed to `formatter` returns a String. Default cell alignment is determined by the type
251
+ of the underlying cell value, not the way it is formatted. This is usually the desired result.
252
+
253
+ Note also that the item yielded to `.each` for each cell when enumerating over a `Tabulo::Row` is
254
+ the underlying value of that cell, not its formatted value.
255
+
211
256
  ### Repeating headers
212
257
 
213
258
  By default, headers are only shown once, at the top of the table (`header_frequency: :start`). If
@@ -274,11 +319,6 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
274
319
  the tests. You can also run `bin/console` for an interactive prompt that will allow you to
275
320
  experiment.
276
321
 
277
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new
278
- version, update the version number in `version.rb`, and then run `bundle exec rake release`, which
279
- will create a git tag for the version, push git commits and tags, and push the `.gem` file to
280
- [rubygems.org](https://rubygems.org).
281
-
282
322
  ## Contributing
283
323
 
284
324
  Bug reports and pull requests are welcome on GitHub at https://github.com/matt-harvey/tabulo.
data/TODO.md CHANGED
@@ -3,7 +3,6 @@
3
3
  * Consider incorporating a linter / static analysis tool into the build.
4
4
  * Raise an ArgumentError for disallowed arguments and options (this is
5
5
  a library!)
6
- * Document :formatter option in README.
7
6
  * Column#initialize should have the same signature as Table#add_column.
8
7
  * Handle multiline cell content (i.e. when the calculated cell value
9
8
  itself contains a newline).
data/lib/tabulo/row.rb CHANGED
@@ -31,7 +31,11 @@ module Tabulo
31
31
  # any column headers that appear just above it in the {Table} (depending on where this Row is
32
32
  # in the {Table} and how the {Table} was configured with respect to header frequency).
33
33
  def to_s
34
- @table.formatted_body_row(@source, with_header: @with_header)
34
+ if @table.columns.any?
35
+ @table.formatted_body_row(@source, with_header: @with_header)
36
+ else
37
+ ""
38
+ end
35
39
  end
36
40
 
37
41
  # @return a Hash representation of the {Row}, with column labels acting
data/lib/tabulo/table.rb CHANGED
@@ -99,7 +99,11 @@ module Tabulo
99
99
  # @return [String] a graphical "ASCII" representation of the Table, suitable for
100
100
  # display in a fixed-width font.
101
101
  def to_s
102
- join_lines(map(&:to_s))
102
+ if @columns.any?
103
+ join_lines(map(&:to_s))
104
+ else
105
+ ""
106
+ end
103
107
  end
104
108
 
105
109
  # Calls the given block once for each {Row} in the Table, passing that {Row} as parameter.
@@ -179,7 +183,7 @@ module Tabulo
179
183
  end
180
184
  end
181
185
 
182
- subrows = (0...cell_stacks.map(&:size).max).map do |subrow_index|
186
+ subrows = (0...cell_stacks.map(&:size).max || 1).map do |subrow_index|
183
187
  cell_stacks.map.with_index do |cell_stack, column_index|
184
188
  if subrow_index < cell_stack.size
185
189
  cell_stack[subrow_index]
@@ -1,3 +1,3 @@
1
1
  module Tabulo
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
data/tabulo.gemspec CHANGED
@@ -29,5 +29,4 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency "simplecov"
30
30
  spec.add_development_dependency "coveralls"
31
31
  spec.add_development_dependency "yard"
32
- spec.add_development_dependency "yard-tomdoc"
33
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tabulo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Harvey
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-25 00:00:00.000000000 Z
11
+ date: 2017-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,20 +94,6 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: yard-tomdoc
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
97
  description: Enumerable ASCII table
112
98
  email:
113
99
  - software@matthewharvey.net