Class: TableStructure::Schema::ColumnConverters

Inherits:
Object
  • Object
show all
Defined in:
lib/table_structure/schema/column_converters.rb

Instance Method Summary collapse

Constructor Details

#initialize(converters) ⇒ ColumnConverters

Returns a new instance of ColumnConverters.



6
7
8
9
# File 'lib/table_structure/schema/column_converters.rb', line 6

def initialize(converters)
  @header_converters = converters.select { |_k, v| v.applicable_to_header? }
  @body_converterss = converters.select { |_k, v| v.applicable_to_body? }
end

Instance Method Details

#extend_methods_for(table, name_prefix:, name_suffix:) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/table_structure/schema/column_converters.rb', line 11

def extend_methods_for(table, name_prefix:, name_suffix:)
  table_context = table.instance_variable_get(:@context)

  header_converters =
    @header_converters
    .merge(
      _prepend_prefix_: create_prepender(name_prefix),
      _append_suffix_: create_appender(name_suffix)
    )
    .reject { |_k, v| v.nil? }

  body_converterss = @body_converterss

  methods =
    {
      header: create_method(header_converters, table_context),
      data: create_method(body_converterss, table_context)
    }
    .reject { |_k, v| v.nil? }

  return if methods.empty?

  table.extend ColumnConvertible.new(methods)
end