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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: a0d7c93628d9188236bb2776136a10588c7ebcdc
4
- data.tar.gz: 58146b9e5cad0513d64f7ade289159f0a3542c37
2
+ SHA256:
3
+ metadata.gz: f3691facd3a9d75752074edc878b8b4a838a448057786b0fc63e743dd1c7d779
4
+ data.tar.gz: b4376d57b9cf0d17cf00821fcc47a9769dd6c4f4962f6140f1b44c0f85ff5dbc
5
5
  SHA512:
6
- metadata.gz: 5883537c12f133b7b83cfd8a1a8b08bbfb82448eae96249839b0470f9a6baeb3d4647952384aed2374988483c068851088d3d721b50b7deed71e000f46aa15ee
7
- data.tar.gz: 66a66de7148ba6f287683dd7bf9d337c41d6a25ea3412cdff5c4078903d49cdacaed64288a776e53e6a7e33c10e10959abd6604c373f17ad134f9cee8cc62ee3
6
+ metadata.gz: a8683049e85e94342dc26f77642f2023ab58dcfd0ae481e11d2f3bd70fb4e31b61ed518e79c035dc9f1d3a3a45cdfce1b35092636ea97b29b67eb148b5742289
7
+ data.tar.gz: f8db001d5bda976b36b2d93be151434fb988224c2a6aeb16c9d1b12d893db9da203e4e9b7a59898df4e17d68a105ca888e5d91b0358b7e0dbd973c6d8bccc83a
@@ -0,0 +1,8 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ time: "10:00"
8
+ open-pull-requests-limit: 10
@@ -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
@@ -1,3 +1,4 @@
1
+ ![Tests](https://github.com/joelhelbling/legitable/actions/workflows/ruby.yml/badge.svg)
1
2
  # Legitable
2
3
 
3
4
  Tables are easier to read. Legitable makes it easy to display plain text output in tabular form.
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 = "legitable"
8
- spec.version = Legitable::VERSION
9
- spec.authors = ["Joel Helbling"]
10
- spec.email = ["joel@joelhelbling.com"]
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 = %q{Easy plain text tables}
13
- spec.description = %q{Tables are easier to read. Legitable makes it easy to display plain text output in tabular form.}
14
- spec.homepage = "https://github.com/joelhelbling/legitable"
15
- spec.license = "MIT"
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 = `git ls-files -z`.split("\x0").reject do |f|
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 = "exe"
21
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
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", "~> 1.16.a"
25
- spec.add_development_dependency "rake", "~> 10.0"
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"
@@ -1,10 +1,10 @@
1
- require 'ostruct'
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: ' | ', separator: '-', style: nil, &block)
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
- self.instance_eval(&block) unless block.nil?
22
+ instance_eval(&block) unless block.nil?
23
23
  end
24
24
 
25
- def <<(row)
26
- initialize_headers(row) if headers.empty?
27
- add_row row
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
- <<-EOS
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.inject({}) do |memo, header|
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
- (format[header].align == :right) ?
98
- value.rjust(cell_width, ' ') :
99
- value.to_s + (' ' * (cell_width - value.to_s.length))
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 ? block : default_formatter
109
+ @formatters[header] = block || default_formatter
104
110
  end
105
111
 
106
112
  def default_formatter
107
- @default_formatter ||= Proc.new {|value| value.to_s }
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 ||= Proc.new { |header| header.to_s.upcase }
125
+ @default_header_formatter ||= proc { |header| header.to_s.upcase }
120
126
  end
121
127
  end
122
128
  end
@@ -1,3 +1,3 @@
1
1
  module Legitable
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
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.2.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: 2018-04-11 00:00:00.000000000 Z
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: 1.16.a
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: 1.16.a
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: '10.0'
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: '10.0'
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
- rubyforge_project:
124
- rubygems_version: 2.6.13
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: []
data/.travis.yml DELETED
@@ -1,5 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.4.2
5
- before_install: gem install bundler -v 1.16.0.pre.3