table_structure 0.3.13 → 0.3.14

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
2
  SHA256:
3
- metadata.gz: 5e9bf971b78fd68cbce2023d18033fcd397b1be4de329a5ba616df1c77baa62c
4
- data.tar.gz: ad9e3d5a67d51239038d7fd711602fc4b518188adfd5fd5d1b1a67c3c3e703cd
3
+ metadata.gz: de3f99fed2d954963668ab10f28a330023e28e8a8c41039544c6f961bb3ab539
4
+ data.tar.gz: 0e012e4fbcb5fff523418b6c3bfd3762fb3ee53460d4ddefc8ae91cf3a68a950
5
5
  SHA512:
6
- metadata.gz: b5f93b81fcff429a3899be7ce8e6a0b67bd638cfefea73e425097a08fcc5ddccee031c4f9c112c491cd4cf2dc1e761e3deaefbc1ba12bbab80a5b6ad37c88946
7
- data.tar.gz: 36b8fa006be7530c21c747dc4c931e662161f60eac6e3c8b8a5dabe429c5bd5ce7bd8837dee05311fcba9f7b8e95fd4305be798e71ed38f5a512b459d3d535d8
6
+ metadata.gz: b913207c2199fe5436fca4e4b894443fe6aa0d07f9b78d7c76da11ad752a45432340baed1feb07176088e95ebc56f2ac8917e2a66f4523dfcb45fbbd6fd91dd6
7
+ data.tar.gz: c96ad294ebc1f7f0e8d23ef3de3b17cdb9fd4546792ce3b8bba80d9d9ae1305c00155cf9f19623efa4b40b2723f71d01a0575c60cc1fbd42d4842a29c7c9256c
data/.gitignore CHANGED
@@ -9,3 +9,5 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
+
13
+ .ruby-version
data/.travis.yml CHANGED
@@ -1,10 +1,11 @@
1
1
  ---
2
- sudo: false
2
+ os: linux
3
3
  language: ruby
4
4
  cache: bundler
5
5
  rvm:
6
+ - 2.7
6
7
  - 2.6
7
8
  - 2.5
8
9
  - 2.4
9
10
  - 2.3
10
- before_install: gem install bundler -v 1.17.3
11
+ before_install: gem install bundler:2.0.2
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 0.3.14
2
+ Changes:
3
+ - Support Ruby 2.7.
4
+
1
5
  # 0.3.13
2
6
  Changes:
3
7
  - Minor improvements.
data/Gemfile.lock CHANGED
@@ -1,35 +1,35 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- table_structure (0.3.13)
4
+ table_structure (0.3.14)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  diff-lcs (1.3)
10
- rake (10.5.0)
11
- rspec (3.8.0)
12
- rspec-core (~> 3.8.0)
13
- rspec-expectations (~> 3.8.0)
14
- rspec-mocks (~> 3.8.0)
15
- rspec-core (3.8.2)
16
- rspec-support (~> 3.8.0)
17
- rspec-expectations (3.8.4)
10
+ rake (13.0.1)
11
+ rspec (3.9.0)
12
+ rspec-core (~> 3.9.0)
13
+ rspec-expectations (~> 3.9.0)
14
+ rspec-mocks (~> 3.9.0)
15
+ rspec-core (3.9.0)
16
+ rspec-support (~> 3.9.0)
17
+ rspec-expectations (3.9.0)
18
18
  diff-lcs (>= 1.2.0, < 2.0)
19
- rspec-support (~> 3.8.0)
20
- rspec-mocks (3.8.1)
19
+ rspec-support (~> 3.9.0)
20
+ rspec-mocks (3.9.0)
21
21
  diff-lcs (>= 1.2.0, < 2.0)
22
- rspec-support (~> 3.8.0)
23
- rspec-support (3.8.2)
22
+ rspec-support (~> 3.9.0)
23
+ rspec-support (3.9.0)
24
24
 
25
25
  PLATFORMS
26
26
  ruby
27
27
 
28
28
  DEPENDENCIES
29
- bundler (~> 1.17)
30
- rake (~> 10.0)
31
- rspec (~> 3.0)
29
+ bundler
30
+ rake
31
+ rspec
32
32
  table_structure!
33
33
 
34
34
  BUNDLED WITH
35
- 1.17.3
35
+ 2.0.2
@@ -5,16 +5,16 @@ module TableStructure
5
5
  def initialize(schema_or_writer, **options)
6
6
  if schema_or_writer.is_a?(Schema)
7
7
  schema = schema_or_writer
8
- @writer = Writer.new(schema, options)
8
+ @writer = Writer.new(schema, **options)
9
9
  elsif schema_or_writer.is_a?(Writer)
10
10
  @writer = schema_or_writer
11
11
  else
12
- raise ::TableStructure::Error, 'First argument must be either Schema or Writer.'
12
+ raise ::TableStructure::Error, "Must be either a schema or a writer. #{schema_or_writer}"
13
13
  end
14
14
  end
15
15
 
16
- def iterate(items, **options)
17
- Enumerator.new { |y| @writer.write(items, to: y, **options) }
16
+ def iterate(items, **options, &block)
17
+ Enumerator.new { |y| @writer.write(items, to: y, **options, &block) }
18
18
  end
19
19
  end
20
20
  end
@@ -35,8 +35,8 @@ module TableStructure
35
35
  next if Utils.evaluate_callable(omitted, context)
36
36
 
37
37
  definition = evaluate_attrs(definition, context)
38
- validator.validate(definition)
39
- definition[:size] = determine_size(definition)
38
+ validator.validate(**definition)
39
+ definition[:size] = determine_size(**definition)
40
40
  definition
41
41
  elsif Utils.schema_instance?(definition)
42
42
  definition
@@ -5,6 +5,7 @@ module TableStructure
5
5
  module DSL
6
6
  module Option
7
7
  def option(name, value)
8
+ warn "[TableStructure] The use of `option` DSL has been deprecated. #{caller_locations(1, 1)}"
8
9
  options[name] = value
9
10
  nil
10
11
  end
@@ -1,11 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'forwardable'
4
-
5
3
  module TableStructure
6
4
  module Schema
7
- extend Forwardable
8
-
9
5
  def self.included(klass)
10
6
  klass.extend(DSL::ColumnConverter)
11
7
  klass.extend(DSL::ColumnDefinition)
@@ -14,22 +10,35 @@ module TableStructure
14
10
  klass.extend(DSL::ResultBuilder)
15
11
  end
16
12
 
17
- DEFAULT_OPTIONS = {
13
+ def initialize(
14
+ name: self.class.name,
15
+ context: nil,
18
16
  name_prefix: nil,
19
17
  name_suffix: nil,
20
18
  key_prefix: nil,
21
19
  key_suffix: nil,
22
- nil_definitions_ignored: false
23
- }.freeze
24
-
25
- def_delegators :@table_structure_schema_definition_, :create_table
20
+ nil_definitions_ignored: false,
21
+ **deprecated_options
22
+ )
23
+ unless deprecated_options.empty?
24
+ caller_location = caller_locations(1, 1)
25
+ deprecated_options.keys.each do |k|
26
+ warn "[TableStructure] Specify #{k} option on the writer or the iterator. #{caller_location}"
27
+ end
28
+ end
26
29
 
27
- def initialize(context: nil, name: self.class.name, **options)
28
30
  column_definitions = [].concat(self.class.column_definitions)
29
31
  context_builders = {}.merge!(self.class.context_builders)
30
32
  column_converters = {}.merge!(self.class.column_converters)
31
33
  result_builders = {}.merge!(self.class.result_builders)
32
- options = DEFAULT_OPTIONS.merge(self.class.options).merge(options)
34
+ options = {
35
+ name_prefix: name_prefix,
36
+ name_suffix: name_suffix,
37
+ key_prefix: key_prefix,
38
+ key_suffix: key_suffix,
39
+ nil_definitions_ignored: nil_definitions_ignored
40
+ }.merge!(self.class.options).merge!(deprecated_options)
41
+
33
42
  @table_structure_schema_definition_ =
34
43
  Definition.new(
35
44
  name,
@@ -41,5 +50,9 @@ module TableStructure
41
50
  options
42
51
  )
43
52
  end
53
+
54
+ def create_table(**options, &block)
55
+ @table_structure_schema_definition_.create_table(**options, &block)
56
+ end
44
57
  end
45
58
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TableStructure
4
- VERSION = '0.3.13'
4
+ VERSION = '0.3.14'
5
5
  end
@@ -15,7 +15,7 @@ module TableStructure
15
15
 
16
16
  def write(items, to:, **options)
17
17
  options = @options.merge(options)
18
- @schema.create_table(options) do |table|
18
+ @schema.create_table(**options) do |table|
19
19
  unless options[:header_omitted]
20
20
  header = table.header(
21
21
  context: options[:header_context]
@@ -40,7 +40,7 @@ module TableStructure
40
40
  warn "[TableStructure] Use `Enumerator` to wrap items instead of `lambda`. The use of `lambda` has been deprecated. #{items}"
41
41
  Enumerator.new { |y| items.call(y) }
42
42
  else
43
- raise ::TableStructure::Error, 'Items is not enumerable.'
43
+ raise ::TableStructure::Error, "Must be enumerable. #{items}"
44
44
  end
45
45
  end
46
46
  end
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
25
  spec.require_paths = ['lib']
26
26
 
27
- spec.add_development_dependency 'bundler', '~> 1.17'
28
- spec.add_development_dependency 'rake', '~> 10.0'
29
- spec.add_development_dependency 'rspec', '~> 3.0'
27
+ spec.add_development_dependency 'bundler'
28
+ spec.add_development_dependency 'rake'
29
+ spec.add_development_dependency 'rspec'
30
30
  end
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: table_structure
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.13
4
+ version: 0.3.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - jsmmr
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-12-01 00:00:00.000000000 Z
11
+ date: 2019-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.17'
19
+ version: '0'
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.17'
26
+ version: '0'
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: '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: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '3.0'
54
+ version: '0'
55
55
  description: Generates and outputs table structured data. Useful to stream CSV.
56
56
  email:
57
57
  - jsmmr@icloud.com
@@ -113,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
113
  - !ruby/object:Gem::Version
114
114
  version: '0'
115
115
  requirements: []
116
- rubygems_version: 3.0.3
116
+ rubygems_version: 3.0.6
117
117
  signing_key:
118
118
  specification_version: 4
119
119
  summary: Generates and outputs table structured data.