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