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