Sha256: afeb0b54cfcdc74b27c0668d927b87eeb3d56324b854dcd99ff6cb831162ccd7

Contents?: true

Size: 822 Bytes

Versions: 1

Compression:

Stored size: 822 Bytes

Contents

require 'active_enum/base'
require 'active_enum/extensions'
require 'active_enum/acts_as_enum'
require 'active_enum/version'

module ActiveEnum
  mattr_accessor :enum_classes
  self.enum_classes = []

  mattr_accessor :use_name_as_value
  self.use_name_as_value = false

  mattr_accessor :raise_error_for_not_defined
  self.raise_error_for_not_defined = false

  class Configuration
    def enum(name, &block)
      class_name = name.to_s.camelize
      class_def = <<-end_eval
        class #{class_name} < ActiveEnum::Base
        end
      end_eval
      eval(class_def, TOPLEVEL_BINDING)
      new_enum = Module.const_get(class_name)
      new_enum.class_eval(&block)
    end
  end

  def self.define(&block)
    raise "Define requires block" unless block_given?
    Configuration.new.instance_eval(&block)
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
active_enum-0.6.2 lib/active_enum.rb