lib/keytar/key_builder.rb in keytar-1.0.1 vs lib/keytar/key_builder.rb in keytar-1.1.0
- old
+ new
@@ -1,7 +1,6 @@
-require 'active_support/inflector' # used for pluralize
-require 'active_support/core_ext/object/blank' # used for blank? and present?
+require File.join(File.dirname(__FILE__), 'key_utility') ## gives us support for Object#blank, Object#present?, String.pluralize without require ActiveSupport
module KeyBuilder
alias :original_method_missing :method_missing
DEFAULTS = {:key_delimiter => ":",
@@ -29,10 +28,11 @@
# class methods to be extended
module Ext
# creates class level getter and setter methods for the defaults for config
DEFAULTS.keys.each do |key|
+ # TODO: re-write without eval
eval %{
def #{key}(#{key}_input = :key_default)
@@#{key} = DEFAULTS[:#{key}] unless defined? @@#{key}
@@#{key} = #{key}_input unless #{key}_input == :key_default
return @@#{key}
@@ -74,15 +74,16 @@
alias :define_key :cache_key
alias :define_keys :cache_key
# a way to define configurations for keytar using a hash
def key_config(options = {})
+ # allow for loose naming of keys configuration symbols can use :key_prefix or just :prefix
options.keys.each do |key|
options["key_#{key}".to_sym] = options[key] if key.to_s !~ /^key_/
end
- options.keys.each do |key|
- eval("@@#{key} = options[key]") if key.to_s =~ /^key_.*/
+ options.each do |key, value|
+ self.send( key , value) if self.respond_to? key
end
end
alias :keyfig :key_config
# Call KeyBuilder.build_key or Foo.build_key with options
@@ -127,10 +128,11 @@
def build_key(options = {})
options[:base] = options[:base]||self.class.to_s.downcase
if (options[:key_pluralize_instances] == true ) || (options[:key_pluralize_instances] != false && self.class.key_pluralize_instances.present?)
options[:base] = options[:key_plural]||self.class.key_plural||options[:base].pluralize
end
- options[:unique] = eval("self.#{options[:key_unique]||self.class.key_unique}") unless eval("self.#{options[:key_unique]||self.class.key_unique}") == object_id
+ unique = self.send "#{options[:key_unique]||self.class.key_unique}".to_sym
+ options[:unique] = unique unless unique == object_id
self.class.build_key(options)
end
\ No newline at end of file