class TableStructure::Schema::Columns::Attributes
Attributes
keys[R]
size[R]
Public Class Methods
new(name:, key:, value:, size:)
click to toggle source
# File lib/table_structure/schema/columns/attributes.rb, line 9 def initialize(name:, key:, value:, size:) @name_callable = Utils.callable?(name) @name = @name_callable ? name : proc { name } @keys = optimize_size([key].flatten, size) @value_callable = Utils.callable?(value) @value = @value_callable ? value : proc { value } @size = size end
Public Instance Methods
name_callable?()
click to toggle source
# File lib/table_structure/schema/columns/attributes.rb, line 28 def name_callable? @name_callable end
names(context, table_context)
click to toggle source
# File lib/table_structure/schema/columns/attributes.rb, line 18 def names(context, table_context) names = @name.call(context, table_context) optimize_size(names, @size) end
value_callable?()
click to toggle source
# File lib/table_structure/schema/columns/attributes.rb, line 32 def value_callable? @value_callable end
values(context, table_context)
click to toggle source
# File lib/table_structure/schema/columns/attributes.rb, line 23 def values(context, table_context) values = @value.call(context, table_context) optimize_size(values, @size) end
Private Instance Methods
optimize_size(value, expected_size)
click to toggle source
# File lib/table_structure/schema/columns/attributes.rb, line 38 def optimize_size(value, expected_size) return value if expected_size == 1 && !value.is_a?(Array) values = [value].flatten actual_size = values.size if actual_size > expected_size values[0, expected_size] elsif actual_size < expected_size [].concat(values).fill(nil, actual_size, (expected_size - actual_size)) else values end end