tabulo 2.5.0 → 2.6.0

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
  SHA256:
3
- metadata.gz: 970ffd91a62eceded969200a310d85faaf83f8a264f12b4d7dbbbb20d913d6cf
4
- data.tar.gz: 1b1d3452e33cb7a07f4940291f68370a6443beb46c013e109348c6ec81647f9c
3
+ metadata.gz: f9ebd03570ab58159573421765c5fa7260dbaec7a7f573a28b746a2c022dd3c8
4
+ data.tar.gz: 85c7d4de41779701baceb6db3b0b66b47025f0c3f99a8181f9948306d5f826bb
5
5
  SHA512:
6
- metadata.gz: 34d885006b3dbf0d8190d91126e4b9ead491b214014f172d57187708836e00ec2e3f97cbe5aa7dc2b9a44ef559bc142cd51c2f3ce255e9e0e20bcc320dd7f73b
7
- data.tar.gz: 9e14cb7b9a6423bb37d863c5a1d0e1c9198804bf2018889400e51fa4c98622dc498d37914aacc9c79602b21ef493e8e0ac62274609e05993de7d78e70064871c
6
+ metadata.gz: eabf52fe920bdbc2867184f3feee0d03e33f79d101d95b4b96095e390786d8443d22c1ab51a10e5a26645c45687f4a36f18c5dc8b35cc72d9162c90c3fb243cc
7
+ data.tar.gz: d991da9c53378a981623c5622be156f970f37e6f42a3dd22b02d51b11020e1302a5b5209117a4a6b9d74e36c555f73f0a2f67eb2b6ff2dafcf7b14d172eb2e00
@@ -5,6 +5,6 @@ rvm:
5
5
  - 2.2.10
6
6
  - 2.3.8
7
7
  - 2.4.9
8
- - 2.5.7
9
- - 2.6.5
10
- - 2.7.0
8
+ - 2.5.8
9
+ - 2.6.6
10
+ - 2.7.1
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ### v2.6.0
4
+
5
+ * Add an additional, optional parameter to `styler`, `header_styler` and `title_styler`
6
+ callbacks, which will receive the index (0, 1 or etc.) of the line within the cell
7
+ being styled.
8
+ * Allow padding to be configured on a column-by-column basis.
9
+ * Minor documentation improvements.
10
+
3
11
  ### v2.5.0
4
12
 
5
13
  * Add option of table title, together with options for styling and aligning the title
data/README.md CHANGED
@@ -7,7 +7,11 @@
7
7
  [![Code Climate][CC img]][Code Climate]
8
8
  [![Awesome][AR img]][Awesome Ruby]
9
9
 
10
- Tabulo is a terminal table generator for Ruby. It is both highly configurable and very easy to use.
10
+ Tabulo is a Ruby library for generating plain text tables (also known as “terminal tables”
11
+ or “ASCII tables”). It is both highly configurable and very easy to use.
12
+
13
+ <a name="overview"></a>
14
+ ## Overview
11
15
 
12
16
  _Quick API:_
13
17
 
@@ -41,41 +45,39 @@ end
41
45
  └────┴────────────┴───────────┘
42
46
  ```
43
47
 
48
+ <a name="features"></a>
44
49
  ## Features
45
50
 
46
- * Presents a [DRY initialization interface](#adding-columns): by being &ldquo;column based&rdquo; rather than
47
- &ldquo;row based&rdquo;, it spares the developer the burden of syncing the ordering within the header row
48
- with that of the body rows.
51
+ * Presents a [DRY API](#adding-columns) that is column-based, not row-based, meaning header and body rows are
52
+ automatically in sync
49
53
  * Lets you set [fixed column widths](#fixed-column-widths), then either [wrap](#overflow-handling)
50
- or [truncate](#overflow-handling) the overflow.
51
- * Alternatively, you can [&ldquo;pack&rdquo;](#pack) the table so that each column is automatically just
52
- wide enough for its contents, but [without overflowing the terminal horizontally](#max-table-width).
53
- * Alignment of cell content is [configurable](#cell-alignment), but has helpful content-based
54
- defaults (numbers right, strings left).
55
- * Tabulate any `Enumerable`: the underlying collection need not be an array.
56
- * Since a `Tabulo::Table` is itself also an `Enumerable`, you can [step through it](#enumerator) a
57
- row at a time, printing as you go, without waiting for the entire underlying collection to load.
58
- In other words, you get a [streaming interface](#enumerator) for free.
59
- * Each `Tabulo::Row` is also an `Enumerable`, [providing access](#accessing-cell-values) to the
60
- underlying cell values.
61
- * The header row can be [repeated](#repeating-headers) at arbitrary intervals.
62
- * Newlines within cell content are correctly handled.
63
- * Multibyte Unicode characters are correctly handled.
64
- * Apply [colours](#colours-and-styling) and other styling to table content and borders, without breaking the table.
65
- * Easily [transpose](#transposition) the table, so that rows are swapped with columns.
54
+ or [truncate](#overflow-handling) the overflow
55
+ * Alternatively, [&ldquo;pack&rdquo;](#pack) the table so that columns are auto-sized to their
56
+ contents, but [without overflowing the terminal](#max-table-width)
57
+ * Cell alignment is [configurable](#cell-alignment), but has helpful content-based defaults (numbers right, strings
58
+ left)
59
+ * Tabulate any `Enumerable`: the underlying collection need not be an array
60
+ * [Step through](#enumerator) your table a row at a time, printing as you go, without waiting for the
61
+ underlying collection to load. In other words, have a [streaming interface](#enumerator) for free.
62
+ * Add an optional [title](#title) to your table
63
+ * The header row can be [repeated](#repeating-headers) at arbitrary intervals
64
+ * Newlines within cell content are correctly handled
65
+ * Multibyte Unicode characters are correctly handled
66
+ * Apply [colours](#colours-and-styling) and other styling to table content and borders, without breaking the table
67
+ * Easily [transpose](#transposition) the table, so that rows are swapped with columns
66
68
  * Choose from multiple [border configurations](#borders), including Markdown, &ldquo;ASCII&rdquo;, and smoothly
67
- joined Unicode border characters.
68
- * Optionally add a [title](#title) to your table.
69
+ joined Unicode border characters
69
70
 
70
71
  Tabulo has also been ported to Crystal (with some modifications): see [Tablo](https://github.com/hutou/tablo).
71
72
 
73
+ <a name="contents"></a>
72
74
  ## Contents
73
75
 
76
+ * [Overview](#overview)
74
77
  * [Features](#features)
75
78
  * [Table of contents](#table-of-contents)
76
79
  * [Installation](#installation)
77
80
  * [Detailed usage](#detailed-usage)
78
- * [Requiring the gem](#requiring-the-gem)
79
81
  * [Creating a table](#table-initialization)
80
82
  * [Adding columns](#adding-columns)
81
83
  * [Quick API](#quick-api)
@@ -90,13 +92,14 @@ Tabulo has also been ported to Crystal (with some modifications): see [Tablo](ht
90
92
  * [Automating column widths](#automating-column-widths)
91
93
  * [Configuring padding](#configuring-padding)
92
94
  * [Overflow handling](#overflow-handling)
95
+ * [Manual cell wrapping](#manual-wrapping)
93
96
  * [Formatting cell values](#formatting-cell-values)
94
97
  * [Colours and other styling](#colours-and-styling)
95
98
  * [Styling cell content](#styling-cell-content)
96
99
  * [Styling column headers](#styling-column-headers)
97
100
  * [Styling the table title](#styling-title)
98
101
  * [Setting default styles](#default-styles)
99
- * [Styling borders](#border-styling)
102
+ * [Styling borders](#styling-borders)
100
103
  * [Repeating headers](#repeating-headers)
101
104
  * [Using a Table Enumerator](#using-a-table-enumerator)
102
105
  * [Accessing cell values](#accessing-cell-values)
@@ -109,7 +112,7 @@ Tabulo has also been ported to Crystal (with some modifications): see [Tablo](ht
109
112
  * [Contributing](#contributing)
110
113
  * [License](#license)
111
114
 
112
- ## Installation
115
+ ## Installation [&#x2191;](#contents)
113
116
 
114
117
  Add this line to your application&#8217;s Gemfile:
115
118
 
@@ -125,16 +128,14 @@ Or install it yourself:
125
128
 
126
129
  $ gem install tabulo
127
130
 
128
- ## Detailed usage
129
-
130
- ### Requiring the gem
131
+ To use the gem, you need to require it in your source code as follows:
131
132
 
132
133
  ```ruby
133
134
  require 'tabulo'
134
135
  ```
135
136
 
136
137
  <a name="table-initialization"></a>
137
- ### Creating a table
138
+ ### Creating a table [&#x2191;](#contents)
138
139
 
139
140
  You instantiate a `Tabulo::Table` by passing it an underlying `Enumerable`, being the collection of
140
141
  things that you want to tabulate. Each member of this collection will end up
@@ -149,10 +150,10 @@ other_table = Tabulo::Table.new(User.all)
149
150
  For the table to be useful, however, it must also contain columns&hellip;
150
151
 
151
152
  <a name="adding-columns"></a>
152
- ### Adding columns
153
+ ### Adding columns [&#x2191;](#contents)
153
154
 
154
155
  <a name="quick-api"></a>
155
- #### Quick API
156
+ #### Quick API [&#x2191;](#contents)
156
157
 
157
158
  When the columns correspond to methods on members of the underlying enumerable, you can use
158
159
  the &ldquo;quick API&rdquo;, by passing a symbol directly to `Tabulo::Table.new` for each column.
@@ -174,7 +175,7 @@ table = Tabulo::Table.new([1, 2, 5], :itself, :even?, :odd?)
174
175
  ```
175
176
 
176
177
  <a name="full-api"></a>
177
- #### Full API
178
+ #### Full API [&#x2191;](#contents)
178
179
 
179
180
  Columns can also be added to the table one-by-one using `add_column`. This &ldquo;full API&rdquo; is
180
181
  more verbose, but provides greater configurability:
@@ -243,7 +244,7 @@ end
243
244
  ```
244
245
 
245
246
  <a name="labels-headers"></a>
246
- #### Column labels _vs_ headers
247
+ #### Column labels _vs_ headers [&#x2191;](#contents)
247
248
 
248
249
  The first argument to `add_column` is the called the _label_ for that column. It serves as the
249
250
  column&#8217;s unique identifier: only one column may have a given label per table.
@@ -257,7 +258,7 @@ table.add_column(:itself2, header: "N", &:itself) # header need not be unique
257
258
  ```
258
259
 
259
260
  <a name="column-positioning"></a>
260
- #### Positioning columns
261
+ #### Positioning columns [&#x2191;](#contents)
261
262
 
262
263
  By default, each new column is added to the right of all the other columns so far added to the
263
264
  table. However, if you want to insert a new column into some other position, you can use the
@@ -280,7 +281,7 @@ table.add_column(:even?, before: :odd?)
280
281
  ```
281
282
 
282
283
  <a name="removing-columns"></a>
283
- ### Removing columns
284
+ ### Removing columns [&#x2191;](#contents)
284
285
 
285
286
  There is also a `#remove_column` method, for deleting an existing column from a table. Pass it
286
287
  the label of the column you want to remove:
@@ -290,13 +291,12 @@ table.remove_column(:even?)
290
291
  ```
291
292
 
292
293
  <a name="title"></a>
293
- ### Adding a title
294
+ ### Adding a title [&#x2191;](#contents)
294
295
 
295
- You can optionally give your table a title, using the `title` option when initializing the table:
296
+ You can give your table a title, using the `title` option:
296
297
 
297
298
  ```ruby
298
- table = Tabulo::Table.new([1, 2, 3], :itself, :odd?, title: "Numbers")
299
- table.add_column(:even?, before: :odd?)
299
+ table = Tabulo::Table.new([1, 2, 3], :itself, :even?, :odd?, title: "Numbers")
300
300
  ```
301
301
 
302
302
  ```
@@ -317,7 +317,7 @@ the rendered table to cease being valid Markdown, as unfortunately almost no mar
317
317
  adding a captions (i.e. titles) to tables.
318
318
 
319
319
  <a name="cell-alignment"></a>
320
- ### Cell alignment
320
+ ### Cell alignment [&#x2191;](#contents)
321
321
 
322
322
  By default, column header text is center-aligned, while the content of each body cell is aligned
323
323
  according to its data type. Numbers are right-aligned, text is left-aligned, and booleans (`false`
@@ -344,10 +344,10 @@ If a table title is present, it is center-aligned by default. This can be change
344
344
  table = Tabulo::Table.new([1, 2], :itself, :even?, title: "Numbers", align_title: :left)
345
345
  ```
346
346
 
347
- ### Column width, wrapping and truncation
347
+ ### Column width, wrapping and truncation [&#x2191;](#contents)
348
348
 
349
349
  <a name="fixed-column-widths"></a>
350
- #### Configuring fixed widths
350
+ #### Configuring fixed widths [&#x2191;](#contents)
351
351
 
352
352
  By default, column width is fixed at 12 characters, plus 1 character of padding on either side.
353
353
  This can be adjusted on a column-by-column basis using the `width` option of `add_column`:
@@ -389,7 +389,7 @@ table = Tabulo::Table.new([1, 2], :itself, :even?, column_width: 6)
389
389
  Widths set for individual columns always override the default column width for the table.
390
390
 
391
391
  <a name="pack"></a>
392
- #### Automating column widths
392
+ #### Automating column widths [&#x2191;](#contents)
393
393
 
394
394
  Instead of setting column widths &ldquo;manually&rdquo;, you can tell the table to sort out the widths
395
395
  itself, so that each column is just wide enough for its header and contents (plus a character
@@ -478,7 +478,7 @@ table itself. There are [ways around this](#freezing-a-table), however, if this
478
478
  behaviour&mdash;see [below](#freezing-a-table).
479
479
 
480
480
  <a name="configuring-padding"></a>
481
- #### Configuring padding
481
+ #### Configuring padding [&#x2191;](#contents)
482
482
 
483
483
  The single character of padding either side of each column is not counted in the column width.
484
484
  The amount of this extra padding can be configured for the table as a whole, using the `column_padding`
@@ -520,8 +520,30 @@ table = Tabulo::Table.new([1, 2, 5], :itself, :even?, :odd?, column_padding: [0,
520
520
  +--------------+--------------+--------------+
521
521
  ```
522
522
 
523
+ Padding can also be configured on a column-by-column basis, using the `padding` option when calling
524
+ `add_column`:
525
+
526
+ ```ruby
527
+ table = Tabulo::Table.new([1, 2, 5], :itself, :even?)
528
+ table.add_column(:odd?, padding: 2)
529
+ ```
530
+
531
+ ```
532
+ > puts table
533
+ +--------------+--------------+------------------+
534
+ | itself | even? | odd? |
535
+ +--------------+--------------+------------------+
536
+ | 1 | false | true |
537
+ | 2 | true | false |
538
+ | 5 | false | true |
539
+ +--------------+--------------+------------------+
540
+ ```
541
+
542
+ This column-level `padding` setting always overrides any table-level `column_padding` setting, for
543
+ the column in question.
544
+
523
545
  <a name="overflow-handling"></a>
524
- #### Overflow handling
546
+ #### Overflow handling [&#x2191;](#contents)
525
547
 
526
548
  By default, if cell contents exceed their column width, they are wrapped for as many rows as
527
549
  required:
@@ -572,8 +594,34 @@ table = Tabulo::Table.new(
572
594
  The character used to indicate truncation, which defaults to `~`, can be configured using the
573
595
  `truncation_indicator` option passed to `Table.new`.
574
596
 
597
+ <a name="manual-wrapping"></a>
598
+ #### Manual cell wrapping [&#x2191;](#contents)
599
+
600
+ You can &ldquo;manually&rdquo; wrap the content of a title, header or body cell at a particular
601
+ point, simply by placing a newline character at that point:
602
+
603
+ ```ruby
604
+ table = Tabulo::Table.new(1..3) do |t|
605
+ t.add_column("The number\nitself", &:itself)
606
+ t.add_column("Even?", &:even?)
607
+ t.add_column("Odd?", &:odd?)
608
+ end
609
+ ```
610
+
611
+ ```
612
+ > puts table
613
+ +--------------+--------------+--------------+
614
+ | The number | Even? | Odd? |
615
+ | itself | | |
616
+ +--------------+--------------+--------------+
617
+ | 1 | false | true |
618
+ | 2 | true | false |
619
+ | 3 | false | true |
620
+ +--------------+--------------+--------------+
621
+ ```
622
+
575
623
  <a name="formatting-cell-values"></a>
576
- ### Formatting cell values
624
+ ### Formatting cell values [&#x2191;](#contents)
577
625
 
578
626
  While the callable passed to `add_column` determines the underyling, calculated value in each
579
627
  cell of the column, there is a separate concept, of a &ldquo;formatter&rdquo;, that determines how
@@ -633,14 +681,14 @@ the table.
633
681
  The `formatter` callback also has an alternative, 2-parameter version. If `formatter` is passed
634
682
  a 2-parameter callable, the second parameter will be given a `CellData` instance,
635
683
  containing additional information about the cell that may be useful in determining how to format
636
- it&mdash;see the [documentation](https://www.rubydoc.info/gems/tabulo/2.5.0/Tabulo/CellData.html)
684
+ it&mdash;see the [documentation](https://www.rubydoc.info/gems/tabulo/2.6.0/Tabulo/CellData.html)
637
685
  for details.
638
686
 
639
687
  <a name="colours-and-styling"></a>
640
- ### Colours and other styling
688
+ ### Colours and other styling [&#x2191;](#contents)
641
689
 
642
690
  <a name="styling-cell-content"></a>
643
- #### Styling cell content
691
+ #### Styling cell content [&#x2191;](#contents)
644
692
 
645
693
  In most terminals, if you want to print text that is coloured, or has certain other styles such as
646
694
  underlining, you need to use ANSI escape sequences, either directly, or by means of a library such
@@ -673,13 +721,13 @@ table.add_column(
673
721
  )
674
722
  ```
675
723
 
676
- The `styler` option should be passed a callable that takes either two or three parameters: the
677
- first parameter represents the underlying value of the cell (in this case a boolean indicating whether
678
- the number is even); the second represents the formatted string value of that cell, i.e. the cell
679
- content after any processing by the [formatter](#formatting-cell-values); and the third parameter,
680
- if present, will be passed a `CellData` object, containing other information about the cell
681
- that may be useful in determining how to style it&mdash;see the
682
- [documentation](https://www.rubydoc.info/gems/tabulo/2.5.0/Tabulo/CellData.html) for details.
724
+ The `styler` option should be passed a callable that takes either two, three or four parameters.
725
+ The first parameter represents the underlying value of the cell (in this case a boolean indicating whether the
726
+ number is even). The second parameter represents the formatted string value of that cell, i.e. the cell
727
+ content after any processing by the [formatter](#formatting-cell-values). The third and fourth
728
+ parameters are optional, and contain further information about the cell and its contents that may be useful in
729
+ determining how to style it. See the [documentation](https://www.rubydoc.info/gems/tabulo/2.6.0/Tabulo/CellData.html)
730
+ for details.
683
731
 
684
732
  If the content of a cell is wrapped over multiple lines, then the `styler` will be called once
685
733
  per line, so that each line of the cell will have the escape sequence applied to it separately
@@ -689,7 +737,7 @@ If the content of a cell has been [truncated](#overflow-handling), then whatever
689
737
  styling apply to the cell content will also be applied the truncation indicator character.
690
738
 
691
739
  <a name="styling-column-headers"></a>
692
- #### Styling column headers
740
+ #### Styling column headers [&#x2191;](#contents)
693
741
 
694
742
  If you want to apply colours or other styling to the content of a column header, as opposed
695
743
  to cells in the table body, use the `header_styler` option, e.g.:
@@ -698,22 +746,36 @@ to cells in the table body, use the `header_styler` option, e.g.:
698
746
  table.add_column(:even?, header_styler: -> (s) { "\033[32m#{s}\033[0m" })
699
747
  ```
700
748
 
701
- The `header_styler` option accepts either a 1- or 2-parameter callable. See the
702
- [documentation](https://www.rubydoc.info/gems/tabulo/2.5.0/Tabulo/Table#add_column-instance_method)
749
+ The `header_styler` option accepts a 1-, 2- or 3-parameter callable. See the
750
+ [documentation](https://www.rubydoc.info/gems/tabulo/2.6.0/Tabulo/Table#add_column-instance_method)
703
751
  for details.
704
- ```
705
752
 
706
753
  <a name="styling-title"></a>
707
- #### Styling the table title
754
+ #### Styling the table title [&#x2191;](#contents)
708
755
 
709
756
  To apply colours or other styling to the table title, if present, use the `title_styler` option
710
757
  when initializing the table. This accepts a single-parameter callable:
711
758
 
712
759
  ```ruby
713
760
  table = Tabulo::Table.new(1..5, :itself, :even?, :odd?, title: "Numbers", title_styler: -> (s) { "\033[32m#{s}\033[0m" })
761
+ ```
762
+
763
+ The `title_styler` option accepts a 1- or 2-parameter callable. See the
764
+ [documentation](https://www.rubydoc.info/gems/tabulo/2.6.0/Tabulo/Table#initialize-instance_method)
765
+ for details.
766
+
767
+ <a name="styling-borders"></a>
768
+ #### Styling borders [&#x2191;](#contents)
769
+
770
+ Styling can also be applied to borders and dividing lines, using the `border_styler` option when
771
+ initializing the table, e.g.:
772
+
773
+ ```ruby
774
+ table = Tabulo::Table.new(1..5, :itself, :even?, :odd?, border_styler: -> (s) { "\033[32m#{s}\033[0m" })
775
+ ```
714
776
 
715
777
  <a name="default-styles"></a>
716
- #### Setting default styles
778
+ #### Setting default styles [&#x2191;](#contents)
717
779
 
718
780
  By default, no styling is applied to the headers or body content of a column unless configured to do
719
781
  so via the `header_styler` or `styler` option when calling `add_column` for that particular column.
@@ -725,21 +787,11 @@ in the table to be green, you could do:
725
787
  table = Tabulo::Table.new(1..5, :itself, :even?, :odd?, header_styler: -> (s) { "\033[32m#{s}\033[0m" })
726
788
  ```
727
789
 
728
- Now, all columns in the table will have automatically have green header text, unless overridden
729
- by another header styler being passed to `#add_column`.
730
-
731
- <a name="border-styling"></a>
732
- #### Styling borders
733
-
734
- Styling can also be applied to borders and dividing lines, using the `border_styler` option when
735
- initializing the table, e.g.:
736
-
737
- ```ruby
738
- table = Tabulo::Table.new(1..5, :itself, :even?, :odd?, border_styler: -> (s) { "\033[32m#{s}\033[0m" })
739
- ```
790
+ Now, all columns in the table will automatically have green header text, unless overridden by another
791
+ header styler being passed to `#add_column`.
740
792
 
741
793
  <a name="repeating-headers"></a>
742
- ### Repeating headers
794
+ ### Repeating headers [&#x2191;](#contents)
743
795
 
744
796
  By default, headers are only shown once, at the top of the table (`header_frequency: :start`). If
745
797
  `header_frequency` is passed `nil`, headers are not shown at all; or, if passed an `Integer` N,
@@ -776,7 +828,7 @@ table = Tabulo::Table.new(1..10, :itself, :even?, header_frequency: 5)
776
828
  Note that if the table has a [title](#title), it will not be repeated; only column headers are repeated.
777
829
 
778
830
  <a name="enumerator"></a>
779
- ### Using a Table Enumerator
831
+ ### Using a Table Enumerator [&#x2191;](#contents)
780
832
 
781
833
  Because it&#8217;s an `Enumerable`, a `Tabulo::Table` can also give you an `Enumerator`,
782
834
  which is useful when you want to step through rows one at a time. In a Rails console,
@@ -805,7 +857,7 @@ in that case the entire collection must be traversed up front in order for colum
805
857
  calculated.)
806
858
 
807
859
  <a name="accessing-cell-values"></a>
808
- ### Accessing cell values
860
+ ### Accessing cell values [&#x2191;](#contents)
809
861
 
810
862
  Each `Tabulo::Table` is an `Enumerable` of which each element is a `Tabulo::Row`. Each `Tabulo::Row`
811
863
  is itself an `Enumerable`, of `Tabulo::Cell`. The `Tabulo::Cell#value` method will return the
@@ -841,7 +893,7 @@ end
841
893
  ```
842
894
 
843
895
  <a name="accessing-sources"></a>
844
- ### Accessing the underlying enumerable
896
+ ### Accessing the underlying enumerable [&#x2191;](#contents)
845
897
 
846
898
  The underlying enumerable for a table can be retrieved by calling the `sources` getter:
847
899
 
@@ -876,7 +928,7 @@ end
876
928
  ```
877
929
 
878
930
  <a name="transposition"></a>
879
- ### Transposing rows and columns
931
+ ### Transposing rows and columns [&#x2191;](#contents)
880
932
 
881
933
  By default, Tabulo generates a table in which each row corresponds to a _record_, i.e. an element of
882
934
  the underlying enumerable, and each column to a _field_. However, there are times when one instead
@@ -904,10 +956,10 @@ a new table in which the rows and columns are swapped:
904
956
  By default, a header row is added to the new table, showing the string value of the element
905
957
  represented in that column. This can be configured, however, along with other aspects of
906
958
  `transpose`&#8217;s behaviour. For details, see the
907
- [documentation](https://www.rubydoc.info/gems/tabulo/2.5.0/Tabulo/Table#transpose-instance_method).
959
+ [documentation](https://www.rubydoc.info/gems/tabulo/2.6.0/Tabulo/Table#transpose-instance_method).
908
960
 
909
961
  <a name="borders"></a>
910
- ### Configuring borders
962
+ ### Configuring borders [&#x2191;](#contents)
911
963
 
912
964
  You can configure the kind of border and divider characters that are used when the table is printed.
913
965
  This is done using the `border` option passed to `Table.new`. The options are as follows.
@@ -1076,7 +1128,7 @@ Note that, by default, none of the border options includes lines drawn _between_
1076
1128
  These are configured via a separate option: see [below](#dividers).
1077
1129
 
1078
1130
  <a name="dividers"></a>
1079
- ### Row dividers
1131
+ ### Row dividers [&#x2191;](#contents)
1080
1132
 
1081
1133
  To add lines between rows in the table body, use the `row_divider_frequency` option when initializing
1082
1134
  the table. The default value for this option is `nil`, meaning there are no dividing lines between
@@ -1115,7 +1167,7 @@ If you want a line before every row, pass `1` to `row_divider_frequency`. For ex
1115
1167
  ```
1116
1168
 
1117
1169
  <a name="freezing-a-table"></a>
1118
- ### Using a table as a snapshot rather than as a dynamic view
1170
+ ### Using a table as a snapshot rather than as a dynamic view [&#x2191;](#contents)
1119
1171
 
1120
1172
  The nature of a `Tabulo::Table` is that of a dynamic view onto the underlying `sources` enumerable
1121
1173
  from which it was initialized (or which was subsequently assigned to its `sources` attribute). That
@@ -1185,7 +1237,7 @@ rendered_table = Tabulo::Table.new(1..10, :itself, :even?, :odd?).pack.to_s
1185
1237
  ```
1186
1238
 
1187
1239
  <a name="motivation"></a>
1188
- ## Comparison with other libraries
1240
+ ## Comparison with other libraries [&#x2191;](#contents)
1189
1241
 
1190
1242
  There are other libraries for generating plain text tables in Ruby. Popular among these are:
1191
1243
 
@@ -1270,7 +1322,7 @@ environment seems cumbersome. Moreover, it seems no longer to be maintained. At
1270
1322
  its last commit was in March 2015.
1271
1323
 
1272
1324
  <a name="contributing"></a>
1273
- ## Contributing
1325
+ ## Contributing [&#x2191;](#contents)
1274
1326
 
1275
1327
  Issues and pull requests are welcome on GitHub at https://github.com/matt-harvey/tabulo.
1276
1328
 
@@ -1281,20 +1333,20 @@ install dependencies.
1281
1333
  `bundle exec rake spec` will run the test suite. For a list of other Rake tasks that are available in
1282
1334
  the development environment, run `bundle exec rake -T`.
1283
1335
 
1284
- ## License
1336
+ ## License [&#x2191;](#contents)
1285
1337
 
1286
1338
  The gem is available as open source under the terms of the [MIT
1287
1339
  License](http://opensource.org/licenses/MIT).
1288
1340
 
1289
1341
  [Gem Version]: https://rubygems.org/gems/tabulo
1290
- [Documentation]: http://www.rubydoc.info/gems/tabulo/2.5.0
1342
+ [Documentation]: http://www.rubydoc.info/gems/tabulo/2.6.0
1291
1343
  [Build Status]: https://travis-ci.org/matt-harvey/tabulo
1292
1344
  [Coverage Status]: https://coveralls.io/r/matt-harvey/tabulo
1293
1345
  [Code Climate]: https://codeclimate.com/github/matt-harvey/tabulo
1294
1346
  [Awesome Ruby]: https://github.com/markets/awesome-ruby#cli-utilities
1295
1347
 
1296
1348
  [GV img]: https://img.shields.io/gem/v/tabulo.svg
1297
- [DC img]: https://img.shields.io/badge/documentation-v2.5.0-blue.svg
1349
+ [DC img]: https://img.shields.io/badge/documentation-v2.6.0-blue.svg
1298
1350
  [BS img]: https://img.shields.io/travis/matt-harvey/tabulo.svg
1299
1351
  [CS img]: https://img.shields.io/coveralls/matt-harvey/tabulo.svg
1300
1352
  [CC img]: https://codeclimate.com/github/matt-harvey/tabulo/badges/gpa.svg