diff --git a/lib/apipie/application.rb b/lib/apipie/application.rb index c63f8ee7..e554e02b 100644 --- a/lib/apipie/application.rb +++ b/lib/apipie/application.rb @@ -68,12 +68,7 @@ def routes_for_action(controller, method) route.path.spec.to_s end - path.gsub!('(.:format)', '') - path.gsub!(/[()]/, '') - - Apipie.configuration.api_base_url.values.each do |values| - path.gsub!("#{values}/", '/') - end + path = Apipie.configuration.routes_path_formatter.call(path) { path: path, verb: human_verb(route) } end diff --git a/lib/apipie/configuration.rb b/lib/apipie/configuration.rb index 2d72ef9e..bc36cc7f 100644 --- a/lib/apipie/configuration.rb +++ b/lib/apipie/configuration.rb @@ -4,7 +4,8 @@ class Configuration attr_accessor :app_name, :app_info, :copyright, :markup, :disqus_shortname, :api_base_url, :doc_base_url, :required_by_default, :layout, :default_version, :debug, :version_in_url, :namespaced_resources, - :validate, :validate_value, :validate_presence, :authenticate, :doc_path + :validate, :validate_value, :validate_presence, :authenticate, :doc_path, + :routes_path_formatter alias_method :validate?, :validate @@ -106,6 +107,11 @@ def api_base_url=(url) @api_base_url[version] = url end + def routes_path_formatter=(formatter) + raise "Apipie: routes_path_formatter : #{formatter} is not a lambda" unless formatter.class == Proc && formatter.lambda? + @routes_path_formatter = formatter + end + def initialize @markup = Apipie::Markup::RDoc.new @app_name = "Another API" @@ -124,6 +130,14 @@ def initialize @version_in_url = true @namespaced_resources = false @doc_path = "doc" + @routes_path_formatter = lambda do |path| + path.gsub!('(.:format)', '') + path.gsub!(/[()]/, '') + Apipie.configuration.api_base_url.values.each do |values| + path.gsub!("#{values}/", '/') + end + path + end end end end