Class: Fog::Attributes::Enum

Inherits:
Default
  • Object
show all
Defined in:
lib/fog/hyperv/fog_extensions/enum.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(model, name, options) ⇒ Enum

Returns a new instance of Enum.



6
7
8
9
# File 'lib/fog/hyperv/fog_extensions/enum.rb', line 6

def initialize(model, name, options)
  @values = options.fetch(:values, [])
  super
end

Instance Attribute Details

#valuesObject (readonly)

Returns the value of attribute values.



4
5
6
# File 'lib/fog/hyperv/fog_extensions/enum.rb', line 4

def values
  @values
end

Instance Method Details

#create_getterObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/fog/hyperv/fog_extensions/enum.rb', line 28

def create_getter
  model.class_eval "      def \#{name}_num\n        return nil if self.\#{name}.nil?\n        if self.\#{name}.is_a?(Fixnum)\n          self.\#{name}\n        else\n          if \#{values}.is_a?(Hash)\n            \#{values}.key(self.\#{name})\n          else\n            \#{values}.index(self.\#{name})\n          end\n        end\n      end\n\n      def \#{name}_values\n        \#{values}.freeze\n      end\n  EOS\n  super\nend\n", __FILE__, __LINE__

#create_setterObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/fog/hyperv/fog_extensions/enum.rb', line 11

def create_setter
  model.class_eval "      def \#{name}=(new_\#{name})\n        if new_\#{name}.is_a?(Fixnum)\n          raise Fog::Hyperv::Errors::ServiceError, \"\\\#{new_\#{name}} is not in the range (0..\#{values.length - 1})\" unless new_\#{name} >= 0 && new_\#{name} < \#{values.length}\n          attributes[:\#{name}] = \#{values}[new_\#{name}]\n        elsif new_\#{name}.nil?\n          attributes[:\#{name}] = nil\n        else\n          new_\#{name} = new_\#{name}.to_s.to_sym unless new_\#{name}.is_a? String\n          raise Fog::Hyperv::Errors::ServiceError, \"\\\#{new_\#{name}} is not one of \#{values.is_a?(Hash) ? values.values : values})\" unless \#{(values.is_a?(Hash) ? values.values : values)}.include? new_\#{name}\n          attributes[:\#{name}] = new_\#{name}\n        end\n      end\n  EOS\nend\n", __FILE__, __LINE__