legitable 0.2.0 → 0.3.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
- 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