Module: EntitySchema::SetupField

Included in:
Dsl
Defined in:
lib/entity_schema/setup_field.rb

Overview

Define or redefine methods for work with Entity fields

Instance Method Summary collapse

Instance Method Details

#setup_field(field) ⇒ Object



6
7
8
9
10
11
12
# 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) ⇒ Object



14
15
16
17
18
19
# 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) ⇒ Object



28
29
30
31
32
33
34
# 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) ⇒ Object



21
22
23
24
25
26
# 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