Class: Genio::Parser::Types::Base

Inherits:
Hash
  • Object
show all
Defined in:
lib/genio/parser/types/base.rb

Direct Known Subclasses

DataType, EnumType, Operation, Property, Service

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Base

Returns a new instance of Base.



21
22
23
24
25
# File 'lib/genio/parser/types/base.rb', line 21

def initialize(options = {})
  options.each do |name, value|
    self[name] = value
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *values) ⇒ Object



51
52
53
54
55
56
57
58
59
# File 'lib/genio/parser/types/base.rb', line 51

def method_missing(name, *values)
  if values.size == 0
    self[name]
  elsif values.size == 1 and name =~ /^(.*)=$/
    self[$1] = values.first
  else
    super
  end
end

Class Method Details

.attr_accessor(name) ⇒ Object



62
63
64
65
66
67
68
69
# File 'lib/genio/parser/types/base.rb', line 62

def attr_accessor(name)
  define_method name do
    self[name]
  end
  define_method "#{name}=" do |value|
    self[name] = value
  end
end

Instance Method Details

#[](name) ⇒ Object



36
37
38
39
# File 'lib/genio/parser/types/base.rb', line 36

def [](name)
  name = name.to_s if name.is_a?(Symbol)
  super(name)
end

#[]=(name, value) ⇒ Object



41
42
43
44
# File 'lib/genio/parser/types/base.rb', line 41

def []=(name, value)
  name = name.to_s if name.is_a?(Symbol)
  super(name, convert(value))
end

#convert(value) ⇒ Object



46
47
48
49
# File 'lib/genio/parser/types/base.rb', line 46

def convert(value)
  value = Base.new(value) if !value.is_a? Base and value.is_a? Hash
  value
end

#merge(hash) ⇒ Object



27
28
29
# File 'lib/genio/parser/types/base.rb', line 27

def merge(hash)
  dup.merge!(hash)
end

#merge!(hash) ⇒ Object



31
32
33
34
# File 'lib/genio/parser/types/base.rb', line 31

def merge!(hash)
  hash.each{|name, value| self[name] = value }
  self
end