Class: Rapidoc::RoutesDoc

Inherits:
Object
  • Object
show all
Defined in:
lib/rapidoc/routes_doc.rb

Overview

This class let us manage resources and actions extracted from ‘rake routes’

Instance Method Summary collapse

Constructor Details

#initializeRoutesDoc

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_namesObject



32
33
34
# File 'lib/rapidoc/routes_doc.rb', line 32

def get_resources_names
  @resources_routes.keys.sort
end