class TableStructure::Schema::Definition::Columns::Attributes

Constants

DEFAULT_SIZE

Public Class Methods

new( name: nil, key: nil, value: nil, size: nil, omitted: false, validator: ) click to toggle source
# File lib/table_structure/schema/definition/columns/attributes.rb, line 10
def initialize(
  name: nil,
  key: nil,
  value: nil,
  size: nil,
  omitted: false,
  validator:
)
  @name = name
  @key = key
  @value = value
  @size = size
  @omitted = omitted
  @validator = validator
end

Public Instance Methods

compile(context:) click to toggle source
# File lib/table_structure/schema/definition/columns/attributes.rb, line 30
def compile(context:)
  size = Utils.evaluate_callable(@size, context)
  @validator.validate(name: @name, key: @key, size: size)
  size ||= [calculate_size(@name), calculate_size(@key)].max
  ::TableStructure::Schema::Columns::Attributes.new(
    name: @name,
    key: @key,
    value: @value,
    size: size
  )
end
omitted?(context:) click to toggle source
# File lib/table_structure/schema/definition/columns/attributes.rb, line 26
def omitted?(context:)
  Utils.evaluate_callable(@omitted, context)
end

Private Instance Methods

calculate_size(val) click to toggle source
# File lib/table_structure/schema/definition/columns/attributes.rb, line 44
def calculate_size(val)
  if val.is_a?(Array)
    return val.empty? ? DEFAULT_SIZE : val.size
  end

  DEFAULT_SIZE
end