18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/enum_field/define_enum.rb', line 18
def define_enum(options = {}, &block)
@enum_builder ||= EnumField::Builder.new(self, options)
@enum_builder.instance_exec(&block) unless @enum_builder.frozen?
EnumField::Builder::METHODS.each do |method|
define_singleton_method method do |*args, &method_block|
@enum_builder.send(method, *args, &method_block)
end
end
@enum_builder.names.each do |method|
define_singleton_method method do
@enum_builder[method]
end
define_method "#{method}?" do
@name == method
end
end
define_singleton_method '[]' do |value|
@enum_builder[value]
end
@enum_builder.freeze!
end
|