Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
* develop:
  Bump version to 0.4.0
  Update documents
  Remove deprecated options from initialize method
  Remove deprecated options from column_converter
  Remove deprecated callable argument
  Remove deprecated DSL
  Remove deprecated method
  Remove specs that use deprecated styles
  Remove deprecated methods
  Remove deprecated options from initialize method
  Remove deprecated options from iterate method
  Remove deprecated options from initialize method
  Remove specs that use deprecated options
  Remove deprecated options from write method
  Remove deprecated options from initialize method
  Remove deprecated options from write method
  • Loading branch information
jsmmr committed Apr 3, 2020
2 parents a3ed695 + 6da0f8b commit 2e86189
Show file tree
Hide file tree
Showing 18 changed files with 81 additions and 410 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# 0.4.0
Changes:
- Remove deprecated methods, arguments and options.
- It is recommended that you update to 0.3.23 first. if you get warnings or errors, fix them and then update to 0.4.0.

# 0.3.23
Changes:
- `TableStructure::CSV::Writer`
Expand Down
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
table_structure (0.3.23)
table_structure (0.4.0)

GEM
remote: https://rubygems.org/
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,10 @@ Initialize a table with the schema and render the table:
<% end %>
```

### Sample with docker

https://github.com/jsmmr/ruby_table_structure_sample

### Advanced

You can add definitions when initializing the schema.
Expand Down Expand Up @@ -472,10 +476,6 @@ concatenated_schema = (UserTableSchema + PetTableSchema + QuestionTableSchema).n
merged_schema = UserTableSchema.merge(PetTableSchema, QuestionTableSchema).new(context: context)
```

## Sample with docker

https://github.com/jsmmr/ruby_table_structure_sample

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/jsmmr/ruby_table_structure.
Expand Down
1 change: 0 additions & 1 deletion lib/table_structure.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ class Error < StandardError; end
require 'table_structure/schema/dsl/column_converter'
require 'table_structure/schema/dsl/column_definition'
require 'table_structure/schema/dsl/context_builder'
require 'table_structure/schema/dsl/option'
require 'table_structure/schema/dsl/row_builder'
require 'table_structure/schema/definition/column_converter'
require 'table_structure/schema/definition/context_builder'
Expand Down
44 changes: 4 additions & 40 deletions lib/table_structure/csv/writer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,68 +9,32 @@ def initialize(
schema,
bom: false,
csv_options: {},
header: { context: nil },
**deprecated_options
header: { context: nil }
)
if deprecated_options.key?(:header_omitted)
header_omitted = deprecated_options[:header_omitted]
warn "[TableStructure] `header_omitted: #{!!header_omitted}` option has been deprecated. Use `header: #{!header_omitted}` option instead."
header = !header_omitted
end

if deprecated_options.key?(:header_context)
header_context = deprecated_options[:header_context]
warn '[TableStructure] `:header_context` option has been deprecated. Use `header: { context: ... }` option instead.'
header = { context: header_context }
end

require 'csv'

@options = {
bom: bom,
csv_options: csv_options
}
@inner_options = {
inner_options = {
header: header
}

@writer = ::TableStructure::Writer.new(schema, **@inner_options)
@writer = ::TableStructure::Writer.new(schema, **inner_options)
end

def write(
items,
to:,
bom: @options[:bom],
csv_options: @options[:csv_options],
**deprecated_options,
&block
)
header = nil

if deprecated_options.key?(:header)
header = deprecated_options[:header]
warn '[TableStructure] Specify :header option as an argument for initialize method.'
end

if deprecated_options.key?(:header_omitted)
header_omitted = deprecated_options[:header_omitted]
warn "[TableStructure] `header_omitted: #{!!header_omitted}` option has been deprecated. Use `header: #{!header_omitted}` option instead."
header = !header_omitted
end

if deprecated_options.key?(:header_context)
header_context = deprecated_options[:header_context]
warn '[TableStructure] `:header_context` option has been deprecated. Use `header: { context: ... }` option instead.'
header = { context: header_context }
end

inner_options = {}
inner_options[:header] = header if header

to << BOM if bom

csv = ::CSV.new(to, **csv_options)
@writer.write(items, to: csv, **inner_options, &block)
@writer.write(items, to: csv, &block)
end
end
end
Expand Down
79 changes: 6 additions & 73 deletions lib/table_structure/iterator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,79 +5,25 @@ class Iterator
def initialize(
schema,
header: { context: nil },
row_type: :array,
**deprecated_options
row_type: :array
)
if deprecated_options.key?(:header_omitted)
header_omitted = deprecated_options[:header_omitted]
warn "[TableStructure] `header_omitted: #{!!header_omitted}` option has been deprecated. Use `header: #{!header_omitted}` option instead."
header = !header_omitted
end

if deprecated_options.key?(:header_context)
header_context = deprecated_options[:header_context]
warn '[TableStructure] `:header_context` option has been deprecated. Use `header: { context: ... }` option instead.'
header = { context: header_context }
end

if deprecated_options.key?(:result_type)
warn '[TableStructure] `:result_type` option has been deprecated. Use `:row_type` option instead.'
row_type = deprecated_options[:result_type]
end

unless schema.is_a?(Schema)
raise ::TableStructure::Error, "Must be use Schema. #{schema}"
end

@schema = schema
@options = {
header: header,
row_type: row_type
}
end

def iterate(
items,
**deprecated_options,
&block
)
header = @options[:header]
row_type = @options[:row_type]

if deprecated_options.key?(:header)
header = deprecated_options[:header]
warn '[TableStructure] Use :header option on initialize method.'
end

if deprecated_options.key?(:header_omitted)
header_omitted = deprecated_options[:header_omitted]
warn "[TableStructure] `header_omitted: #{!!header_omitted}` option has been deprecated. Use `header: #{!header_omitted}` option instead."
header = !header_omitted
end

if deprecated_options.key?(:header_context)
header_context = deprecated_options[:header_context]
warn '[TableStructure] `:header_context` option has been deprecated. Use `header: { context: ... }` option instead.'
header = { context: header_context }
end

if deprecated_options.key?(:row_type)
row_type = deprecated_options[:row_type]
warn '[TableStructure] Use :row_type option on initialize method.'
end

if deprecated_options.key?(:result_type)
warn '[TableStructure] `:result_type` option has been deprecated. Use `:row_type` option instead.'
row_type = deprecated_options[:result_type]
def iterate(items, &block)
unless items.respond_to?(:each)
raise ::TableStructure::Error, "Must be enumerable. #{items}"
end

items = enumerize(items)

enum =
Table::Iterator
.new(
Table.new(@schema, row_type: row_type),
header: header
Table.new(@schema, row_type: @options[:row_type]),
header: @options[:header]
)
.iterate(items)

Expand All @@ -90,18 +36,5 @@ def iterate(

enum
end

private

def enumerize(items)
if items.respond_to?(:each)
items
elsif items.respond_to?(:call)
warn "[TableStructure] Use `Enumerator` to wrap items instead of `lambda`. The use of `lambda` has been deprecated. #{items}"
Enumerator.new { |y| items.call(y) }
else
raise ::TableStructure::Error, "Must be enumerable. #{items}"
end
end
end
end
49 changes: 5 additions & 44 deletions lib/table_structure/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ def self.included(klass)
klass.extend(DSL::ColumnConverter)
klass.extend(DSL::ColumnDefinition)
klass.extend(DSL::ContextBuilder)
klass.extend(DSL::Option)
klass.extend(DSL::RowBuilder)
klass.extend(ClassMethods)
end
Expand Down Expand Up @@ -36,31 +35,8 @@ def initialize(
key_prefix: nil,
key_suffix: nil,
nil_definitions_ignored: false,
**deprecated_options,
&block
)
if deprecated_options.key?(:row_type)
raise ::TableStructure::Error, 'Use :row_type option with Table, Writer or Iterator.'
end

if deprecated_options.key?(:result_type)
raise ::TableStructure::Error, ':result_type option has been deprecated. Use :row_type option instead.'
end

options =
[
self.class.options,
{
name_prefix: name_prefix,
name_suffix: name_suffix,
key_prefix: key_prefix,
key_suffix: key_suffix,
nil_definitions_ignored: nil_definitions_ignored
},
deprecated_options
]
.reduce({}, &:merge!)

schema_classes = [self.class]

if block_given?
Expand All @@ -82,14 +58,14 @@ def initialize(
.reduce({}, &:merge!)
.merge(
ColumnConverter.create_optional_converters(
name_prefix: options.delete(:name_prefix),
name_suffix: options.delete(:name_suffix)
name_prefix: name_prefix,
name_suffix: name_suffix
)
)

@key_converter = KeyConverter.new(
prefix: options.delete(:key_prefix),
suffix: options.delete(:key_suffix)
prefix: key_prefix,
suffix: key_suffix
)

@row_builders =
Expand All @@ -104,24 +80,9 @@ def initialize(
.new(
name,
schema_classes.map(&:column_definitions).reduce([], &:concat),
{ nil_definitions_ignored: options.delete(:nil_definitions_ignored) }
{ nil_definitions_ignored: nil_definitions_ignored }
)
.compile(@context)

@options = options
end

def create_table(row_type: :array, **deprecated_options, &block)
warn '[TableStructure] `TableStructure::Schema#create_table` has been deprecated. Use `TableStructure::Table.new` instead.'

options = @options.merge(deprecated_options)

if options.key?(:result_type)
warn '[TableStructure] `:result_type` option has been deprecated. Use `:row_type` option instead.'
options[:row_type] = options[:result_type]
end

::TableStructure::Table.new(self, row_type: options[:row_type] || row_type, &block)
end

def contain_callable?(attribute)
Expand Down
13 changes: 0 additions & 13 deletions lib/table_structure/schema/dsl/column_converter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,10 @@ module DSL
module ColumnConverter
def column_converter(
name,
callable = nil,
header: true,
body: true,
**deprecated_options,
&block
)
if deprecated_options.key?(:row)
warn '[TableStructure] `:row` option has been deprecated. Use `:body` option instead.'
body = deprecated_options[:row]
end

if callable
warn "[TableStructure] Use `block` instead of #{callable}."
end

block ||= callable

column_converters[name] =
::TableStructure::Schema::Definition::ColumnConverter.new(
header: header,
Expand Down
8 changes: 1 addition & 7 deletions lib/table_structure/schema/dsl/context_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,7 @@ module Schema
module DSL
module ContextBuilder
# TODO: Change definition style
def context_builder(name, callable = nil, &block)
if callable
warn "[TableStructure] Use `block` instead of #{callable}."
end

block ||= callable

def context_builder(name, &block)
context_builders[name] =
::TableStructure::Schema::Definition::ContextBuilder.new(
&block
Expand Down
19 changes: 0 additions & 19 deletions lib/table_structure/schema/dsl/option.rb

This file was deleted.

7 changes: 0 additions & 7 deletions lib/table_structure/schema/dsl/row_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,9 @@ module DSL
module RowBuilder
def row_builder(
name,
callable = nil,
enabled_row_types: %i[array hash],
&block
)
if callable
warn "[TableStructure] Use `block` instead of #{callable}."
end

block ||= callable

row_builders[name] =
::TableStructure::Schema::Definition::RowBuilder.new(
enabled_row_types: enabled_row_types,
Expand Down

0 comments on commit 2e86189

Please sign in to comment.