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