lib/sugar-high/alias.rb in sugar-high-0.6.3 vs lib/sugar-high/alias.rb in sugar-high-0.7.0
- old
+ new
@@ -3,65 +3,65 @@
require 'sugar-high/arguments'
require 'sugar-high/array'
require 'active_support/inflector'
class Module
-
+
# multi_alias name, :create => :new, :insert_into => [:inject_into, :update], :read => :X_content
- # :options => :after
- #
+ # :options => :after
+ #
# create_xxx becomes new_xxx
# insert_into_xxx becomes inject_into_xxx and update_xxx
# read_xxx becomes xxx_content (overriding default :after action to insert at the X)
-
+
def multi_alias *args
name = case args.first
- when Symbol, String
+ when Symbol, String
args.first.to_s
- when Hash
+ when Hash
# default is :after
args.first[:_before_] ? :before : :after
end
-
+
if name.kind_of? Symbol
config_options = name
options = args.first
name = options[:"_#{name}_"]
else
options = args[1]
- end
-
+ end
+
raise ArgumentError, "Name of method pattern to alias not specified. Please pass name as either first argument or as :_before_ or :_after_ option" if !name
options.delete(:_after_)
options.delete(:_before_)
direction = options.delete(:_direction_)
-
+
options = options.hash_revert if direction == :reverse
-
+
options.each_pair do |original, aliases|
alias_methods name.to_sym, original, [aliases].flatten, config_options
- end
+ end
end
def alias_methods name, original, aliases, config_options
- aliases.each do |alias_name|
+ aliases.each do |alias_name|
new_alias = make_name(name, alias_name.to_s, config_options)
original_name = make_name(name, original.to_s, config_options)
- begin
+ begin
alias_method new_alias, original_name
rescue
raise ArgumentError, "Error creating alias for ##{original_name} with ##{new_alias}"
- end
+ end
end
end
def alias_hash(hash)
pluralize = hash.delete(:pluralize)
singularize = hash.delete(:singularize)
# option = :pluralize => pluralize, :singularize => singularize
-
+
hash.each_pair do |original, alias_meth|
alias_for original, alias_meth
alias_for original.to_s.singularize, alias_meth.to_s.singularize, :singularize => true if singularize
alias_for original.to_s.pluralize, alias_meth.to_s.pluralize, :pluralize => true if pluralize
end
@@ -83,10 +83,10 @@
alias_method :aliases_for, :alias_for
protected
def make_name name, alias_name, config_options
- return alias_name.gsub(/X/, name.to_s) if alias_name =~ /X/
+ return alias_name.gsub(/X/, name.to_s) if alias_name =~ /X/
case config_options
when :before
"#{name}_#{alias_name}"
else # default
"#{alias_name}_#{name}"
\ No newline at end of file