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|