Class: HecksDomain::Parser::DomainObject
- Inherits:
-
Object
- Object
- HecksDomain::Parser::DomainObject
- Defined in:
- lib/hecks/domain/parser/domain_object.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#aggregate ⇒ Object
readonly
Returns the value of attribute aggregate.
-
#fields ⇒ Object
readonly
Returns the value of attribute fields.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
- #binding ⇒ Object
- #boolean(name) ⇒ Object
- #boolean_accessors ⇒ Object
- #commands ⇒ Object
- #currency(name) ⇒ Object
- #entity(name) ⇒ Object
- #file_name ⇒ Object
- #folder_name ⇒ Object
-
#initialize(name, aggregate, &block) ⇒ DomainObject
constructor
A new instance of DomainObject.
- #initializer_attributes ⇒ Object
- #integer(name) ⇒ Object
- #invariants ⇒ Object
- #list(name) ⇒ Object
- #list_accessors ⇒ Object
- #operations(list) ⇒ Object
- #operations_get ⇒ Object
- #optional(value) ⇒ Object
- #private_accessors ⇒ Object
- #public_accessors ⇒ Object
- #read_only(value) ⇒ Object
- #reference(name) ⇒ Object
- #string(name) ⇒ Object
- #value(name) ⇒ Object
Constructor Details
#initialize(name, aggregate, &block) ⇒ DomainObject
Returns a new instance of DomainObject.
6 7 8 9 10 11 12 13 14 15 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 6 def initialize(name, aggregate, &block) @name = name @aggregate = aggregate @operations = [] @fields = [] if is_a?(Entity) add_field(:id, IntegerField).tap { |field| field.optional = true } end instance_eval(&block) end |
Instance Attribute Details
#aggregate ⇒ Object (readonly)
Returns the value of attribute aggregate.
4 5 6 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 4 def aggregate @aggregate end |
#fields ⇒ Object (readonly)
Returns the value of attribute fields.
4 5 6 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 4 def fields @fields end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
4 5 6 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 4 def name @name end |
Instance Method Details
#binding ⇒ Object
112 113 114 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 112 def binding super end |
#boolean(name) ⇒ Object
87 88 89 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 87 def boolean(name) add_field(name, BooleanField) end |
#boolean_accessors ⇒ Object
29 30 31 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 29 def boolean_accessors @fields.select { |field| field.is_a?(BooleanField) } end |
#commands ⇒ Object
51 52 53 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 51 def commands @commands end |
#currency(name) ⇒ Object
79 80 81 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 79 def currency(name) add_field(name, CurrencyField) end |
#entity(name) ⇒ Object
91 92 93 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 91 def entity(name) add_field(name, EntityField) end |
#file_name ⇒ Object
99 100 101 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 99 def file_name folder_name + '.rb' end |
#folder_name ⇒ Object
103 104 105 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 103 def folder_name @name.to_s.underscore end |
#initializer_attributes ⇒ Object
21 22 23 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 21 def initializer_attributes @fields.reject(&:read_only?).map(&:attribute_name).join(', ') end |
#integer(name) ⇒ Object
63 64 65 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 63 def integer(name) add_field(name, IntegerField) end |
#invariants ⇒ Object
25 26 27 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 25 def invariants @invariants end |
#list(name) ⇒ Object
55 56 57 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 55 def list(name) add_field(name, ListField) end |
#list_accessors ⇒ Object
33 34 35 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 33 def list_accessors @fields.select { |field| field.is_a?(ListField) } end |
#operations(list) ⇒ Object
67 68 69 70 71 72 73 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 67 def operations(list) @operations = list @operations = list.map do |name| Operation.new(name: name, domain_object: self) end end |
#operations_get ⇒ Object
75 76 77 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 75 def operations_get @operations end |
#optional(value) ⇒ Object
17 18 19 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 17 def optional(value) value.optional = true end |
#private_accessors ⇒ Object
45 46 47 48 49 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 45 def private_accessors @fields.map do |field| field.private_accessor end.compact.join(', ') end |
#public_accessors ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 37 def public_accessors @fields.map do |field| field.public_accessor end.tap do |fields| fields << ':id' if is_a?(Entity) end.compact.join(', ') end |
#read_only(value) ⇒ Object
107 108 109 110 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 107 def read_only(value) value.read_only = true value end |
#reference(name) ⇒ Object
95 96 97 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 95 def reference(name) add_field(name, ReferenceField) end |
#string(name) ⇒ Object
59 60 61 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 59 def string(name) add_field(name, StringField) end |
#value(name) ⇒ Object
83 84 85 |
# File 'lib/hecks/domain/parser/domain_object.rb', line 83 def value(name) add_field(name, ValueField) end |