module NestedStruct::Interface::ClassMethods

Attributes

field_names[R]
fields[R]

Public Instance Methods

field(name, coercer_expression = nil) click to toggle source
# File lib/nested_struct/interface.rb, line 10
def field(name, coercer_expression = nil)
  if superclass.ancestors.include?(NestedStruct::Interface)
    @field_names ||= superclass.field_names.dup || []
    @fields ||= superclass.fields.dup || []
  else
    @field_names ||= []
    @fields ||= []
  end

  if !field_names.include?(name)
    @field_names << name
    @fields << Field.new(name, coercer_expression)
    attr_accessor(name)
  end
end