tabulo 2.3.2 → 2.3.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/CHANGELOG.md +4 -0
- data/README.md +3 -3
- data/VERSION +1 -1
- data/lib/tabulo/cell.rb +1 -1
- data/lib/tabulo/table.rb +10 -12
- data/lib/tabulo/util.rb +10 -0
- data/lib/tabulo/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6104501fe177f52639fb3e05c12c5cd53d62d1388ad85e2abecaa58f15b3d39d
|
4
|
+
data.tar.gz: 35648de653973f20a5871a71bb2cd9340eb1b80196dc25f510477e7e8143a9db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5c158f65f97272c637bf37fab53f542001264f3e094ea07a67b4a5e6d583cfb315a40d0a51abad2135fa84169b1edce77420dc9fded8f619f842aa5087c7262
|
7
|
+
data.tar.gz: 0d0f2abb4a82098b4c4886926254f65c17c80b751509818927f8a237c2f4dce35f61d8fcdf028ba9d47640611d14349437eb767ffd2deaf92ebc5c8ee16eda8c
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -798,7 +798,7 @@ a new table in which the rows and columns are swapped:
|
|
798
798
|
By default, a header row is added to the new table, showing the string value of the element
|
799
799
|
represented in that column. This can be configured, however, along with other aspects of
|
800
800
|
`transpose`’s behaviour. For details, see the
|
801
|
-
[documentation](https://www.rubydoc.info/gems/tabulo/2.3.
|
801
|
+
[documentation](https://www.rubydoc.info/gems/tabulo/2.3.3/Tabulo/Table#transpose-instance_method).
|
802
802
|
|
803
803
|
<a name="borders"></a>
|
804
804
|
### Configuring borders
|
@@ -1107,14 +1107,14 @@ The gem is available as open source under the terms of the [MIT
|
|
1107
1107
|
License](http://opensource.org/licenses/MIT).
|
1108
1108
|
|
1109
1109
|
[Gem Version]: https://rubygems.org/gems/tabulo
|
1110
|
-
[Documentation]: http://www.rubydoc.info/gems/tabulo/2.3.
|
1110
|
+
[Documentation]: http://www.rubydoc.info/gems/tabulo/2.3.3
|
1111
1111
|
[Build Status]: https://travis-ci.org/matt-harvey/tabulo
|
1112
1112
|
[Coverage Status]: https://coveralls.io/r/matt-harvey/tabulo
|
1113
1113
|
[Code Climate]: https://codeclimate.com/github/matt-harvey/tabulo
|
1114
1114
|
[Awesome Ruby]: https://github.com/markets/awesome-ruby#cli-utilities
|
1115
1115
|
|
1116
1116
|
[GV img]: https://img.shields.io/gem/v/tabulo.svg
|
1117
|
-
[DC img]: https://img.shields.io/badge/documentation-v2.3.
|
1117
|
+
[DC img]: https://img.shields.io/badge/documentation-v2.3.3-blue.svg
|
1118
1118
|
[BS img]: https://img.shields.io/travis/matt-harvey/tabulo.svg
|
1119
1119
|
[CS img]: https://img.shields.io/coveralls/matt-harvey/tabulo.svg
|
1120
1120
|
[CC img]: https://codeclimate.com/github/matt-harvey/tabulo/badges/gpa.svg
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.3.
|
1
|
+
2.3.3
|
data/lib/tabulo/cell.rb
CHANGED
@@ -87,7 +87,7 @@ module Tabulo
|
|
87
87
|
end
|
88
88
|
|
89
89
|
def style_and_align_cell_content(content)
|
90
|
-
padding =
|
90
|
+
padding = Util.max(@width - Unicode::DisplayWidth.of(content), 0)
|
91
91
|
left_padding, right_padding =
|
92
92
|
case real_alignment
|
93
93
|
when :center
|
data/lib/tabulo/table.rb
CHANGED
@@ -129,6 +129,7 @@ module Tabulo
|
|
129
129
|
@header_frequency = header_frequency
|
130
130
|
@header_styler = header_styler
|
131
131
|
@row_divider_frequency = row_divider_frequency
|
132
|
+
@styler = styler
|
132
133
|
@truncation_indicator = validate_character(truncation_indicator,
|
133
134
|
DEFAULT_TRUNCATION_INDICATOR, InvalidTruncationIndicatorError, "truncation indicator")
|
134
135
|
@wrap_body_cells_to = wrap_body_cells_to
|
@@ -286,17 +287,15 @@ module Tabulo
|
|
286
287
|
# Note that when printed, the first row will visually include the headers (assuming these
|
287
288
|
# were not disabled when the Table was initialized).
|
288
289
|
def each
|
289
|
-
header_frequency_is_integer = (Integer === @header_frequency)
|
290
290
|
@sources.each_with_index do |source, index|
|
291
|
-
is_first_row = (index == 0)
|
292
291
|
header =
|
293
|
-
if
|
292
|
+
if (index == 0) && @header_frequency
|
294
293
|
:top
|
295
|
-
elsif
|
294
|
+
elsif (Integer === @header_frequency) && Util.divides?(@header_frequency, index)
|
296
295
|
:middle
|
297
296
|
end
|
298
297
|
|
299
|
-
show_divider = @row_divider_frequency &&
|
298
|
+
show_divider = @row_divider_frequency && (index != 0) && Util.divides?(@row_divider_frequency, index)
|
300
299
|
|
301
300
|
yield Row.new(self, source, header: header, divider: show_divider)
|
302
301
|
end
|
@@ -363,14 +362,13 @@ module Tabulo
|
|
363
362
|
|
364
363
|
@sources.each do |source|
|
365
364
|
get_columns.each do |column|
|
366
|
-
|
367
|
-
column.width =
|
365
|
+
cell_width = wrapped_width(column.body_cell(source).formatted_content)
|
366
|
+
column.width = Util.max(column.width, cell_width)
|
368
367
|
end
|
369
368
|
end
|
370
369
|
|
371
370
|
if max_table_width
|
372
|
-
max_table_width
|
373
|
-
shrink_to(max_table_width)
|
371
|
+
shrink_to(max_table_width == :auto ? TTY::Screen.width : max_table_width)
|
374
372
|
end
|
375
373
|
|
376
374
|
self
|
@@ -532,8 +530,8 @@ module Tabulo
|
|
532
530
|
# Ensure max table width is at least wide enough to accommodate table borders and padding
|
533
531
|
# and one character of content.
|
534
532
|
min_table_width = total_padding + total_borders + column_registry.count
|
535
|
-
max_table_width = min_table_width
|
536
|
-
required_reduction =
|
533
|
+
max_table_width = Util.max(min_table_width, max_table_width)
|
534
|
+
required_reduction = Util.max(unadjusted_table_width - max_table_width, 0)
|
537
535
|
|
538
536
|
required_reduction.times do
|
539
537
|
widest_column = columns.inject(columns.first) do |widest, column|
|
@@ -600,7 +598,7 @@ module Tabulo
|
|
600
598
|
def wrapped_width(str)
|
601
599
|
segments = str.split($/)
|
602
600
|
segments.inject(1) do |longest_length_so_far, segment|
|
603
|
-
|
601
|
+
Util.max(longest_length_so_far, Unicode::DisplayWidth.of(segment))
|
604
602
|
end
|
605
603
|
end
|
606
604
|
end
|
data/lib/tabulo/util.rb
CHANGED
@@ -3,6 +3,16 @@ module Tabulo
|
|
3
3
|
# @!visibility private
|
4
4
|
module Util
|
5
5
|
|
6
|
+
# @!visibility private
|
7
|
+
def self.divides?(smaller, larger)
|
8
|
+
larger % smaller == 0
|
9
|
+
end
|
10
|
+
|
11
|
+
# @!visibility private
|
12
|
+
def self.max(x, y)
|
13
|
+
x > y ? x : y
|
14
|
+
end
|
15
|
+
|
6
16
|
# @!visibility private
|
7
17
|
def self.slice_hash(hash, *keys)
|
8
18
|
new_hash = {}
|
data/lib/tabulo/version.rb
CHANGED
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: 2.3.
|
4
|
+
version: 2.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Harvey
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-03-
|
11
|
+
date: 2020-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tty-screen
|