0
@@ -65,47 +65,64 @@ module Merb
0
- def resources(name, options = {}, &block)
0
- singular = name.to_s.singularize
0
- keys = options.delete(:keys) || [:id]
0
- params = { :controller => options.delete(:controller) || name.to_s }
0
+ def resources(name, *args, &block)
0
+ options = extract_options_from_args!(args) || {}
0
+ singular = Extlib::Inflection.singularize(name)
0
+ klass = args.first ? args.first.to_s : Extlib::Inflection.classify(singular)
0
+ keys = [ options.delete(:keys) || :id ].flatten
0
+ params = { :controller => options.delete(:controller) || name }
0
collection = options.delete(:collection) || {}
0
member = { :edit => :get, :delete => :get }.merge(options.delete(:member) || {})
0
# Try pulling :namespace out of options for backwards compatibility
0
options[:name_prefix] ||= nil # Don't use a name_prefix if not needed
0
+ options[:resource_prefix] ||= nil # Don't use a resource_prefix if not needed
0
options[:controller_prefix] ||= options.delete(:namespace)
0
self.namespace(name, options).to(params) do |resource|
0
root_keys = keys.map { |k| ":#{k}" }.join("/")
0
- resource.match("(/index)(.:format)", :method => :get).to(:action => "index").name(name)
0
+ resource.match("(/index)(.:format)", :method => :get).to(:action => "index").
0
+ name(name).register_resource(name)
0
resource.match("(.:format)", :method => :post).to(:action => "create")
0
- resource.match("/new(.:format)", :method => :get).to(:action => "new").name(:new, singular)
0
+ resource.match("/new(.:format)", :method => :get).to(:action => "new").
0
+ name("new", singular).register_resource(name, "new")
0
# => user defined collection routes
0
collection.each_pair do |action, method|
0
- resource.match("/#{action}(.:format)", :method => method).to(:action => "#{action}").name(action, name)
0
+ resource.match("/#{action}(.:format)", :method => method).to(:action => "#{action}").
0
+ name(action, name).register_resource(name, action)
0
- resource.match("/#{root_keys}(.:format)", :method => :get).to(:action => "show").name(singular)
0
+ resource.match("/#{root_keys}(.:format)", :method => :get).to(:action => "show").
0
+ name(singular).register_resource(klass)
0
# => user defined member routes
0
member.each_pair do |action, method|
0
- resource.match("/#{root_keys}/#{action}(.:format)", :method => method).to(:action => "#{action}").name(action, singular)
0
+ resource.match("/#{root_keys}/#{action}(.:format)", :method => method).
0
+ to(:action => "#{action}").name(action, singular).register_resource(klass, action)
0
- resource.match("/#{root_keys}(.:format)", :method => :put).to(:action => "update")
0
+ resource.match("/#{root_keys}(.:format)", :method => :put).
0
+ to(:action => "update")
0
- resource.match("/#{root_keys}(.:format)", :method => :delete).to(:action => "destroy")
0
+ resource.match("/#{root_keys}(.:format)", :method => :delete).
0
+ to(:action => "destroy")
0
nested_keys = keys.map { |k| k.to_s == "id" ? ":#{singular}_id" : ":#{k}" }.join("/")
0
- resource.options(:name_prefix => singular
).match("/#{nested_keys}", &block)
0
+ resource.options(:name_prefix => singular
, :resource_prefix => klass).match("/#{nested_keys}", &block)
0
@@ -164,24 +181,35 @@ module Merb
0
- def resource(name, options = {}, &block)
0
- params = { :controller => options.delete(:controller) || name.to_s.pluralize }
0
+ def resource(name, *args, &block)
0
+ options = extract_options_from_args!(args) || {}
0
+ params = { :controller => options.delete(:controller) || name.pluralize }
0
options[:name_prefix] ||= nil # Don't use a name_prefix if not needed
0
+ options[:resource_prefix] ||= nil # Don't use a resource_prefix if not needed
0
options[:controller_prefix] ||= options.delete(:namespace)
0
self.namespace(name, options).to(params) do |resource|
0
- resource.match("(.:format)", :method => :get ).to(:action => "show" ).name(name)
0
+ resource.match("(.:format)", :method => :get ).to(:action => "show" ).name(name)
.register_resource(name)0
resource.match("(.:format)", :method => :post ).to(:action => "create" )
0
resource.match("(.:format)", :method => :put ).to(:action => "update" )
0
resource.match("(.:format)", :method => :delete).to(:action => "destroy")
0
- resource.match("/new(.:format)", :method => :get ).to(:action => "new" ).name(:new, name)
0
- resource.match("/edit(.:format)", :method => :get ).to(:action => "edit" ).name(:edit, name)
0
- resource.match("/delete(.:format)", :method => :get ).to(:action => "delete" ).name(:delete, name)
0
+ resource.match("/new(.:format)", :method => :get ).to(:action => "new" ).name(:new, name).register_resource(name, "new")
0
+ resource.match("/edit(.:format)", :method => :get ).to(:action => "edit" ).name(:edit, name).register_resource(name, "edit")
0
+ resource.match("/delete(.:format)", :method => :get ).to(:action => "delete" ).name(:delete, name).register_resource(name, "delete")
0
- resource.options(:name_prefix => name,
&block) if block_given?
0
+ resource.options(:name_prefix => name,
:resource_prefix => name, &block) if block_given?
0
+ def register_resource(*key)
0
+ key = [@options[:resource_prefix], key].flatten.compact
Comments
No one has commented yet.