lib/dox/entities/action.rb in dox-0.0.3 vs lib/dox/entities/action.rb in dox-1.0.0.alpha
- old
+ new
@@ -1,18 +1,32 @@
module Dox
module Entities
class Action
+ attr_reader :name, :desc, :verb, :path, :uri_params
+ attr_accessor :examples
- attr_accessor :name, :desc, :verb, :path, :uri_params, :examples
-
- def initialize(name, details)
+ def initialize(name, details, request)
+ @request = request
@name = name
@desc = details[:action_desc]
- @verb = details[:action_verb]
- @path = details[:action_path]
+ @verb = details[:action_verb] || request.method
+ @path = details[:action_path] || template_path
@uri_params = details[:action_params]
@examples = []
end
+ private
+
+ attr_reader :request
+
+ def template_path
+ path_params = request.path_parameters.symbolize_keys.except(:action, :controller)
+ path = request.path.dup
+ path_params.each do |key, value|
+ # /pokemons/1 => pokemons/{id}
+ path.sub!(/\/#{value}(\/|$)/, "/{#{key}}\\1")
+ end
+ path
+ end
end
end
end