lib/human_routes/context.rb in human_routes-0.0.6 vs lib/human_routes/context.rb in human_routes-0.0.7
- old
+ new
@@ -14,17 +14,25 @@
def controller_name
@controller_name ||= options.delete(:name) { controller.to_s }
end
def singular_controller_name
- @singular_controller_name ||= controller_name.singularize
+ @singular_controller_name ||= if options[:resource]
+ controller_name
+ else
+ controller_name.singularize
+ end
end
def resource?
- controller_name == singular_controller_name
+ options[:resource] || controller_name == singular_controller_name
end
+ def path_name
+ options[:path_name] || controller_name
+ end
+
def routes
@routes ||= []
end
def create(*args)
@@ -127,11 +135,11 @@
def all
create
update
remove
show
- list unless controller_name == controller_name.singularize
+ list unless resource?
end
def get(action, *args)
path, name, options = extract_route_args(
segment: action,
@@ -180,21 +188,26 @@
.merge(route_options)
path = args.first || path_for(segment, route_options)
path = [
- route_options[:parent].to_s.split("/"),
+ route_options[:prefix].to_s.split("/"),
path.to_s.split("/")
].flatten.compact
path = path.map do |s|
s.start_with?(":") ? s : s.dasherize
end.join("/")
name = route_options.delete(:as) { default_name.underscore.tr("/", "_") }
- route_options.delete(:bare)
+ %i[
+ bare
+ prefix
+ path_name
+ resource
+ ].each {|key| route_options.delete(key) }
[path, name, route_options]
end
private def default_options
@@ -214,24 +227,24 @@
segments.compact.join("/")
end
private def resource_segments(segment, _param, options)
- segments = [controller_name]
+ segments = [path_name]
segments << segment unless options[:bare]
segments
end
private def resources_segments(segment, param, _options)
case segment
when :list
- [controller_name]
+ [path_name]
when :new
- [controller_name, segment]
+ [path_name, segment]
when :show
- [controller_name, ":#{param}"]
+ [path_name, ":#{param}"]
else
- [controller_name, ":#{param}", segment]
+ [path_name, ":#{param}", segment]
end
end
end
end