lib/temple/mixins/engine_dsl.rb in temple-0.7.3 vs lib/temple/mixins/engine_dsl.rb in temple-0.7.4
- old
+ new
@@ -15,36 +15,36 @@
chain_modified!
end
def remove(name)
name = chain_name(name)
- raise "#{name} not found" unless chain.reject! {|i| i.first == name }
+ raise "#{name} not found" unless chain.reject! {|i| name === i.first }
chain_modified!
end
alias use append
def before(name, *args, &block)
name = chain_name(name)
e = chain_element(args, block)
- chain.map! {|f| f.first == name ? [e, f] : [f] }.flatten!(1)
+ chain.map! {|f| name === f.first ? [e, f] : [f] }.flatten!(1)
raise "#{name} not found" unless chain.include?(e)
chain_modified!
end
def after(name, *args, &block)
name = chain_name(name)
e = chain_element(args, block)
- chain.map! {|f| f.first == name ? [f, e] : [f] }.flatten!(1)
+ chain.map! {|f| name === f.first ? [f, e] : [f] }.flatten!(1)
raise "#{name} not found" unless chain.include?(e)
chain_modified!
end
def replace(name, *args, &block)
name = chain_name(name)
e = chain_element(args, block)
- chain.map! {|f| f.first == name ? e : f }
+ chain.map! {|f| name === f.first ? e : f }
raise "#{name} not found" unless chain.include?(e)
chain_modified!
end
# Shortcuts to access namespaces
@@ -57,12 +57,19 @@
end
private
def chain_name(name)
- name = Class === name ? name.name.to_sym : name
- raise(ArgumentError, 'Name argument must be Class or Symbol') unless Symbol === name
- name
+ case name
+ when Class
+ name.name.to_sym
+ when Symbol, String
+ name.to_sym
+ when Regexp
+ name
+ else
+ raise(ArgumentError, 'Name argument must be Class, Symbol, String or Regexp')
+ end
end
def chain_class_constructor(filter, local_options)
define_options(filter.options.valid_keys) if respond_to?(:define_options) && filter.respond_to?(:options)
proc do |engine|