# encoding: utf-8
module EnumField
  module DefineEnum
    def self.included(base)
      base.send :include, InstanceMethods
      base.send :extend,  ClassMethods
    end
      
    module ClassMethods
      def self.extended(base)
        base.class_eval do
          attr_reader :id
        end
      end

      def define_enum(&block)
        @enum_builder ||= EnumField::Builder.new(self)
        yield @enum_builder

        [:all, :names, :find_by_id, :find, :first, :last].each do |method|
          instance_eval <<-END
            def #{method}(*args, &block)
              @enum_builder.send(:#{method}, *args, &block)
            end
          END
        end
      end
    end
    
    module InstanceMethods
    end
  end
end