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 " def self.\#{name}\n members[\"\#{name}\"]\n end\n EOS\nend\n", __FILE__, __LINE__ + 1
|