Class: Rapidoc::RoutesDoc
- Inherits:
-
Object
- Object
- Rapidoc::RoutesDoc
- Defined in:
- lib/rapidoc/routes_doc.rb
Overview
This class let us manage resources and actions extracted from ‘rake routes’
Instance Method Summary collapse
- #add_route(route) ⇒ Object
- #get_action_route_info(resource, action) ⇒ Object
- #get_actions_route_info(resource) ⇒ Object
- #get_resource_actions_names(resource) ⇒ Object
- #get_resources_names ⇒ Object
-
#initialize ⇒ RoutesDoc
constructor
A new instance of RoutesDoc.
Constructor Details
#initialize ⇒ RoutesDoc
Returns a new instance of RoutesDoc.
9 10 11 |
# File 'lib/rapidoc/routes_doc.rb', line 9 def initialize @resources_routes = {} end |
Instance Method Details
#add_route(route) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/rapidoc/routes_doc.rb', line 13 def add_route( route ) if route.split.size > 3 method, url, controller_action = route.split.slice(1, 3) elsif route.split.size == 2 url, controller_action = route.split else method, url, controller_action = route.split end # check when method is not specified unless controller_action.include? '#' controller_action = url url = method method = nil end add_resource_route( method, url, controller_action ) end |
#get_action_route_info(resource, action) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/rapidoc/routes_doc.rb', line 46 def get_action_route_info( resource, action ) urls = [] controllers = [] methods = [] # compact and generate action info from all routes info of resource @resources_routes[resource.to_sym].each do |route| if route[:action] == action.to_s urls.push route[:url] controllers.push route[:controller] methods.push route[:method] end end return { resource: resource.to_s, action: action.to_s, method: methods.uniq.first, urls: urls.uniq, controllers: controllers.uniq } end |
#get_actions_route_info(resource) ⇒ Object
40 41 42 43 44 |
# File 'lib/rapidoc/routes_doc.rb', line 40 def get_actions_route_info( resource ) get_resource_actions_names( resource ).map do |action| get_action_route_info( resource, action ) end end |
#get_resource_actions_names(resource) ⇒ Object
36 37 38 |
# File 'lib/rapidoc/routes_doc.rb', line 36 def get_resource_actions_names( resource ) @resources_routes[resource.to_sym].map{ |route| route[:action] }.uniq end |
#get_resources_names ⇒ Object
32 33 34 |
# File 'lib/rapidoc/routes_doc.rb', line 32 def get_resources_names @resources_routes.keys.sort end |