module XDR::DSL::Enum

Public Instance Methods

member(name, value) click to toggle source
# 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
seal() click to toggle source
# File lib/xdr/dsl/enum.rb, line 21
def seal
  self.sealed = true
end