module EntitySchema::SetupField

Define or redefine methods for work with Entity fields

Public Instance Methods

setup_field(field) click to toggle source
# File lib/entity_schema/setup_field.rb, line 6
def setup_field(field)
  entity_schema.add_field(field)

  setup_getter(field)
  setup_setter(field)
  setup_predicate(field) if field.specification.predicate
end
setup_getter(field) click to toggle source
# File lib/entity_schema/setup_field.rb, line 14
def setup_getter(field)
  m = field.name
  define_method(m) { field.get(self) }
  public(m)  if     field.specification.public_getter
  private(m) unless field.specification.public_getter
end
setup_predicate(field) click to toggle source
# File lib/entity_schema/setup_field.rb, line 28
def setup_predicate(field)
  m = :"#{field.name}?"
  remove_method(m) if method_defined?(m)
  define_method(m) { field.get(self) }
  public(m)  if     field.specification.public_getter
  private(m) unless field.specification.public_getter
end
setup_setter(field) click to toggle source
# File lib/entity_schema/setup_field.rb, line 21
def setup_setter(field)
  m = :"#{field.name}="
  define_method(m) { |value| field.set(self, value) }
  public(m)  if     field.specification.public_setter
  private(m) unless field.specification.public_setter
end