Class: Fiona7::TypeRegister::AdHocTypeDefinition

Inherits:
Object
  • Object
show all
Defined in:
lib/fiona7/type_register.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(values, obj_class = nil) ⇒ AdHocTypeDefinition

Returns a new instance of AdHocTypeDefinition.



103
104
105
106
# File 'lib/fiona7/type_register.rb', line 103

def initialize(values, obj_class=nil)
  self.values = values
  self.obj_class = obj_class || values.delete(:_obj_class)
end

Instance Attribute Details

#obj_classObject

Returns the value of attribute obj_class.



102
103
104
# File 'lib/fiona7/type_register.rb', line 102

def obj_class
  @obj_class
end

#valuesObject

Returns the value of attribute values.



102
103
104
# File 'lib/fiona7/type_register.rb', line 102

def values
  @values
end

Instance Method Details

#type_definitionObject



108
109
110
111
112
113
114
115
116
117
118
# File 'lib/fiona7/type_register.rb', line 108

def type_definition
  type_definition = TypeDefinition.new(self.obj_class)
  values.each do |name, possible_pair|
    next if name =~ /\A_/ # built-in attribute
    next unless possible_pair.kind_of?(Array) && possible_pair.length == 2

    type, _ = *possible_pair
    type_definition.add_attr(name, type)
  end
  type_definition
end