Module: XDR::DSL::Enum

Included in:
Enum
Defined in:
lib/xdr/dsl/enum.rb

Instance Method Summary collapse

Instance Method Details

#member(name, value) ⇒ Object

Raises:

  • (ArgumentError)


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/xdr/dsl/enum.rb', line 2

def member(name, value)
  name = name.to_s.underscore

  raise ArgumentError, "#{self} is sealed" if sealed
  raise ArgumentError, "#{value} is not Integer" unless value.is_a?(Integer)
  raise ArgumentError, "#{value} is already used" if members.key?(name)

  instance = new(name, value)
  self.members = members.merge(name => instance)
  self.by_value = by_value.merge(instance.value => instance)

  class_eval <<-EOS, __FILE__, __LINE__ + 1
    def self.#{name}
      members["#{name}"]
    end
  EOS
end

#sealObject



20
21
22
# File 'lib/xdr/dsl/enum.rb', line 20

def seal
  self.sealed = true
end