Class: HecksDomainBuilder::Attribute

Inherits:
Object
  • Object
show all
Defined in:
lib/domain_builder/attribute.rb

Overview

A Domain Object attribute

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(string) ⇒ Attribute

Returns a new instance of Attribute.



7
8
9
10
# File 'lib/domain_builder/attribute.rb', line 7

def initialize(string)
  @string = string
  @object_name = object_name
end

Instance Attribute Details

#object_nameObject (readonly)

Returns the value of attribute object_name.



5
6
7
# File 'lib/domain_builder/attribute.rb', line 5

def object_name
  @object_name
end

#typeObject



20
21
22
23
# File 'lib/domain_builder/attribute.rb', line 20

def type
  return @type if @type
  @string.split(":").last.delete("[").delete("]").camelize
end

Instance Method Details

#==(other) ⇒ Object



54
55
56
57
58
59
# File 'lib/domain_builder/attribute.rb', line 54

def ==(other)
  return false if other.name != name
  return false if other.type != type
  return false if other.domain_module != domain_module
  return true
end

#copy(new_values = {}) ⇒ Object



30
31
32
33
34
# File 'lib/domain_builder/attribute.rb', line 30

def copy(new_values={})
  result = self.class.new(@string)
  result.type = new_values[:type] if new_values[:type]
  result
end

#domain_moduleObject



25
26
27
28
# File 'lib/domain_builder/attribute.rb', line 25

def domain_module
  return unless @string.include?("::")
  @string.split("::").first.split(":").last.camelize
end

#domain_reference?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/domain_builder/attribute.rb', line 40

def domain_reference?
  @string.include?('::')
end

#list?Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/domain_builder/attribute.rb', line 12

def list?
  @string.include?("[")
end

#nameObject



16
17
18
# File 'lib/domain_builder/attribute.rb', line 16

def name
  @string.split(":").first
end

#primitive?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/domain_builder/attribute.rb', line 50

def primitive?
  ['String', 'Integer', 'Currency'].include?(type)
end

#reference?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/domain_builder/attribute.rb', line 36

def reference?
  !primitive? && !list?
end

#referenced_objectObject



44
45
46
47
48
# File 'lib/domain_builder/attribute.rb', line 44

def referenced_object
  return unless reference?
  return @string.split("::").last if @string.include?("::")
  @string.split(":").last
end