lib/simple_enum.rb in simple_enum-1.0.1 vs lib/simple_enum.rb in simple_enum-1.1.0
- old
+ new
@@ -6,21 +6,20 @@
# Copyright:: Copyright (c) 2009 Lukas Westermann (Zurich, Switzerland)
# Licence:: MIT-Licence (http://www.opensource.org/licenses/mit-license.php)
#
# See the +as_enum+ documentation for more details.
-require 'simple_enum/array_support'
require 'simple_enum/enum_hash'
require 'simple_enum/object_support'
require 'simple_enum/validation'
# Base module which gets included in <tt>ActiveRecord::Base</tt>. See documentation
# of +SimpleEnum::ClassMethods+ for more details.
module SimpleEnum
# +SimpleEnum+ version string.
- VERSION = "1.0.1".freeze
+ VERSION = "1.1.0".freeze
class << self
# Provides configurability to SimpleEnum, allows to override some defaults which are
# defined for all uses of +as_enum+. Most options from +as_enum+ are available, such as:
@@ -209,20 +208,24 @@
sym
end
# allow class access to each value
unless options[:slim] === :class
- metaclass.send(:define_method, "#{prefix}#{sym}", Proc.new { |*args| args.first ? k : code })
+ if self.respond_to? :singleton_class
+ singleton_class.send(:define_method, "#{prefix}#{sym}", Proc.new { |*args| args.first ? k : code })
+ else
+ metaclass.send(:define_method, "#{prefix}#{sym}", Proc.new { |*args| args.first ? k : code })
+ end
end
end
end
end
include Validation
def human_enum_name(enum, key, options = {})
- defaults = self_and_descendants_from_active_record.map { |klass| :"#{klass.name.underscore}.#{enum}.#{key}" }
+ defaults = ([self] + subclasses).map { |klass| :"#{klass.name.underscore}.#{enum}.#{key}" }
defaults << :"#{enum}.#{key}"
defaults << options.delete(:default) if options[:default]
defaults << "#{key}".humanize
options[:count] ||= 1
I18n.translate(defaults.shift, options.merge(:default => defaults.flatten, :scope => [:activerecord, :enums]))
@@ -238,10 +241,9 @@
end
# Tie stuff together and load translations if ActiveRecord is defined
if Object.const_defined?('ActiveRecord')
Object.send(:include, SimpleEnum::ObjectSupport)
- Array.send(:include, SimpleEnum::ArraySupport)
ActiveRecord::Base.send(:include, SimpleEnum)
I18n.load_path << File.join(File.dirname(__FILE__), '..', 'locales', 'en.yml')
-end
\ No newline at end of file
+end