legitable 0.2.0 → 0.3.0
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 +5 -5
- data/.github/dependabot.yml +8 -0
- data/.github/workflows/ruby.yml +35 -0
- data/README.md +1 -0
- data/legitable.gemspec +14 -15
- data/lib/legitable/table.rb +26 -20
- data/lib/legitable/version.rb +1 -1
- metadata +12 -12
- data/.travis.yml +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f3691facd3a9d75752074edc878b8b4a838a448057786b0fc63e743dd1c7d779
|
4
|
+
data.tar.gz: b4376d57b9cf0d17cf00821fcc47a9769dd6c4f4962f6140f1b44c0f85ff5dbc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a8683049e85e94342dc26f77642f2023ab58dcfd0ae481e11d2f3bd70fb4e31b61ed518e79c035dc9f1d3a3a45cdfce1b35092636ea97b29b67eb148b5742289
|
7
|
+
data.tar.gz: f8db001d5bda976b36b2d93be151434fb988224c2a6aeb16c9d1b12d893db9da203e4e9b7a59898df4e17d68a105ca888e5d91b0358b7e0dbd973c6d8bccc83a
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
+
|
8
|
+
name: Tests
|
9
|
+
|
10
|
+
on:
|
11
|
+
push:
|
12
|
+
branches: [ master ]
|
13
|
+
pull_request:
|
14
|
+
branches: [ master ]
|
15
|
+
|
16
|
+
jobs:
|
17
|
+
test:
|
18
|
+
|
19
|
+
runs-on: ubuntu-latest
|
20
|
+
strategy:
|
21
|
+
matrix:
|
22
|
+
ruby-version: ['2.6', '2.7', '3.0']
|
23
|
+
|
24
|
+
steps:
|
25
|
+
- uses: actions/checkout@v2
|
26
|
+
- name: Set up Ruby
|
27
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
28
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
29
|
+
# uses: ruby/setup-ruby@v1
|
30
|
+
uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
|
31
|
+
with:
|
32
|
+
ruby-version: ${{ matrix.ruby-version }}
|
33
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
34
|
+
- name: Run tests
|
35
|
+
run: bundle exec rake
|
data/README.md
CHANGED
data/legitable.gemspec
CHANGED
@@ -1,28 +1,27 @@
|
|
1
|
-
|
2
1
|
lib = File.expand_path("../lib", __FILE__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require "legitable/version"
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name
|
8
|
-
spec.version
|
9
|
-
spec.authors
|
10
|
-
spec.email
|
6
|
+
spec.name = "legitable"
|
7
|
+
spec.version = Legitable::VERSION
|
8
|
+
spec.authors = ["Joel Helbling"]
|
9
|
+
spec.email = ["joel@joelhelbling.com"]
|
11
10
|
|
12
|
-
spec.summary
|
13
|
-
spec.description
|
14
|
-
spec.homepage
|
15
|
-
spec.license
|
11
|
+
spec.summary = "Easy plain text tables"
|
12
|
+
spec.description = "Tables are easier to read. Legitable makes it easy to display plain text output in tabular form."
|
13
|
+
spec.homepage = "https://github.com/joelhelbling/legitable"
|
14
|
+
spec.license = "MIT"
|
16
15
|
|
17
|
-
spec.files
|
18
|
-
f.match(%r{^(test|spec|features)/})
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
|
+
f.match(%r{^(test|spec|features|\.vim.*|\.rspec.*)/})
|
19
18
|
end
|
20
|
-
spec.bindir
|
21
|
-
spec.executables
|
19
|
+
spec.bindir = "exe"
|
20
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
21
|
spec.require_paths = ["lib"]
|
23
22
|
|
24
|
-
spec.add_development_dependency "bundler", "~>
|
25
|
-
spec.add_development_dependency "rake", "~>
|
23
|
+
spec.add_development_dependency "bundler", "~> 2.2.rc"
|
24
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
26
25
|
spec.add_development_dependency "rspec", "~> 3.7"
|
27
26
|
spec.add_development_dependency "rspec-given", "~> 3.8"
|
28
27
|
spec.add_development_dependency "pry", "~> 0.11"
|
data/lib/legitable/table.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require
|
1
|
+
require "ostruct"
|
2
2
|
|
3
3
|
module Legitable
|
4
4
|
class Table
|
5
5
|
attr_reader :rows, :headers, :delimiter, :separator, :format, :style
|
6
6
|
|
7
|
-
def initialize(alignment: {}, delimiter:
|
7
|
+
def initialize(alignment: {}, delimiter: " | ", separator: "-", style: nil, &block)
|
8
8
|
@rows = []
|
9
9
|
@headers = []
|
10
10
|
@format = {}
|
@@ -15,23 +15,30 @@ module Legitable
|
|
15
15
|
@style = style
|
16
16
|
|
17
17
|
if style == :markdown
|
18
|
-
@delimiter =
|
19
|
-
@separator =
|
18
|
+
@delimiter = " | "
|
19
|
+
@separator = "-"
|
20
20
|
end
|
21
21
|
|
22
|
-
|
22
|
+
instance_eval(&block) unless block.nil?
|
23
23
|
end
|
24
24
|
|
25
|
-
def <<(
|
26
|
-
|
27
|
-
|
25
|
+
def <<(data)
|
26
|
+
case data
|
27
|
+
when Array
|
28
|
+
data.each { |row| self << row }
|
29
|
+
when Hash
|
30
|
+
initialize_headers(data) if headers.empty?
|
31
|
+
add_row data
|
32
|
+
when Enumerable
|
33
|
+
data.each { |row| self << row }
|
34
|
+
end
|
28
35
|
self
|
29
36
|
end
|
30
37
|
|
31
38
|
def to_s
|
32
|
-
|
33
|
-
#{render_headers}
|
34
|
-
#{render_rows}
|
39
|
+
<<~EOS
|
40
|
+
#{render_headers}
|
41
|
+
#{render_rows}
|
35
42
|
EOS
|
36
43
|
end
|
37
44
|
|
@@ -49,14 +56,13 @@ module Legitable
|
|
49
56
|
end
|
50
57
|
|
51
58
|
def add_row(row)
|
52
|
-
rows << headers.
|
59
|
+
rows << headers.each_with_object({}) do |header, memo|
|
53
60
|
formatter = format[header].formatter
|
54
61
|
value = formatter.call(row[header].to_s).to_s
|
55
62
|
if format[header].width < value.length
|
56
63
|
format[header].width = value.length
|
57
64
|
end
|
58
65
|
memo[header] = value
|
59
|
-
memo
|
60
66
|
end
|
61
67
|
end
|
62
68
|
|
@@ -85,7 +91,7 @@ module Legitable
|
|
85
91
|
if style == :markdown
|
86
92
|
headers.map do |header|
|
87
93
|
separator * format[header].width
|
88
|
-
end.join(
|
94
|
+
end.join("-|-")
|
89
95
|
else
|
90
96
|
separator * row_width
|
91
97
|
end
|
@@ -94,17 +100,17 @@ module Legitable
|
|
94
100
|
def render_cell(header, value)
|
95
101
|
cell_width = format[header].width
|
96
102
|
|
97
|
-
|
98
|
-
value.rjust(cell_width,
|
99
|
-
value.to_s + (
|
103
|
+
format[header].align == :right ?
|
104
|
+
value.rjust(cell_width, " ") :
|
105
|
+
value.to_s + (" " * (cell_width - value.to_s.length))
|
100
106
|
end
|
101
107
|
|
102
108
|
def formatting(header, &block)
|
103
|
-
@formatters[header] = block
|
109
|
+
@formatters[header] = block || default_formatter
|
104
110
|
end
|
105
111
|
|
106
112
|
def default_formatter
|
107
|
-
@default_formatter ||=
|
113
|
+
@default_formatter ||= proc { |value| value.to_s }
|
108
114
|
end
|
109
115
|
|
110
116
|
def formatting_headers(&block)
|
@@ -116,7 +122,7 @@ module Legitable
|
|
116
122
|
end
|
117
123
|
|
118
124
|
def default_header_formatter
|
119
|
-
@default_header_formatter ||=
|
125
|
+
@default_header_formatter ||= proc { |header| header.to_s.upcase }
|
120
126
|
end
|
121
127
|
end
|
122
128
|
end
|
data/lib/legitable/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: legitable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel Helbling
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-10-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.2.rc
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 2.2.rc
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,9 +88,10 @@ executables: []
|
|
88
88
|
extensions: []
|
89
89
|
extra_rdoc_files: []
|
90
90
|
files:
|
91
|
+
- ".github/dependabot.yml"
|
92
|
+
- ".github/workflows/ruby.yml"
|
91
93
|
- ".gitignore"
|
92
94
|
- ".rspec"
|
93
|
-
- ".travis.yml"
|
94
95
|
- Gemfile
|
95
96
|
- LICENSE.txt
|
96
97
|
- README.md
|
@@ -105,7 +106,7 @@ homepage: https://github.com/joelhelbling/legitable
|
|
105
106
|
licenses:
|
106
107
|
- MIT
|
107
108
|
metadata: {}
|
108
|
-
post_install_message:
|
109
|
+
post_install_message:
|
109
110
|
rdoc_options: []
|
110
111
|
require_paths:
|
111
112
|
- lib
|
@@ -120,9 +121,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
120
121
|
- !ruby/object:Gem::Version
|
121
122
|
version: '0'
|
122
123
|
requirements: []
|
123
|
-
|
124
|
-
|
125
|
-
signing_key:
|
124
|
+
rubygems_version: 3.2.22
|
125
|
+
signing_key:
|
126
126
|
specification_version: 4
|
127
127
|
summary: Easy plain text tables
|
128
128
|
test_files: []
|