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)


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

def member(name, value)
  raise ArgumentError, "#{self} is sealed" if self.sealed
  raise ArgumentError, "#{value} is not Fixnum" unless value.is_a?(Fixnum)
  raise ArgumentError, "#{value} is already used" unless 

  name = name.to_s.underscore

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

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

#sealObject



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

def seal
  self.sealed = true
end