class Deterministic::EnumBuilder::DataType
Public Class Methods
create(parent, name, args)
click to toggle source
# File lib/deterministic/enum.rb, line 65 def self.create(parent, name, args) raise ArgumentError, "#{args} may not contain the reserved name :value" if args.include? :value dt = Class.new(parent) dt.instance_eval { class << self; public :new; end include AnyEnum define_method(:args) { args } define_method(:parent) { parent } private :parent } if args.count == 0 dt.instance_eval { include Nullary private :value } elsif args.count == 1 dt.instance_eval { define_method(args[0].to_sym) { value } } else dt.instance_eval { include Binary args.each do |m| define_method(m) do @value[m] end end } end dt end