Class: ActionDispatch::Journey::Routes
Overview
The Routing table. Contains all routes for a system. Routes can be added to the table by calling Routes#add_route.
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Enumerable
#as_json, #exclude?, #index_by, #many?, #sum
Constructor Details
#initialize ⇒ Routes
Returns a new instance of Routes.
10
11
12
13
14
15
16
|
# File 'actionpack/lib/action_dispatch/journey/routes.rb', line 10
def initialize
@routes = []
@named_routes = {}
@ast = nil
@partitioned_routes = nil
@simulator = nil
end
|
Instance Attribute Details
#named_routes ⇒ Object
Returns the value of attribute named_routes
8
9
10
|
# File 'actionpack/lib/action_dispatch/journey/routes.rb', line 8
def named_routes
@named_routes
end
|
Returns the value of attribute routes
8
9
10
|
# File 'actionpack/lib/action_dispatch/journey/routes.rb', line 8
def routes
@routes
end
|
Instance Method Details
#add_route(app, path, conditions, defaults, name = nil) ⇒ Object
Add a route to the routing table.
57
58
59
60
61
62
63
64
65
|
# File 'actionpack/lib/action_dispatch/journey/routes.rb', line 57
def add_route(app, path, conditions, defaults, name = nil)
route = Route.new(name, app, path, conditions, defaults)
route.precedence = routes.length
routes << route
named_routes[name] = route if name && !named_routes[name]
clear_cache!
route
end
|
42
43
44
45
46
47
|
# File 'actionpack/lib/action_dispatch/journey/routes.rb', line 42
def ast
@ast ||= begin
asts = partitioned_routes.first.map(&:ast)
Nodes::Or.new(asts) unless asts.empty?
end
end
|
31
32
33
34
|
# File 'actionpack/lib/action_dispatch/journey/routes.rb', line 31
def clear
routes.clear
named_routes.clear
end
|
#each(&block) ⇒ Object
27
28
29
|
# File 'actionpack/lib/action_dispatch/journey/routes.rb', line 27
def each(&block)
routes.each(&block)
end
|
23
24
25
|
# File 'actionpack/lib/action_dispatch/journey/routes.rb', line 23
def last
routes.last
end
|
#length ⇒ Object
Also known as:
size
18
19
20
|
# File 'actionpack/lib/action_dispatch/journey/routes.rb', line 18
def length
routes.length
end
|
#partitioned_routes ⇒ Object
36
37
38
39
40
|
# File 'actionpack/lib/action_dispatch/journey/routes.rb', line 36
def partitioned_routes
@partitioned_routes ||= routes.partition do |r|
r.path.anchored && r.ast.grep(Nodes::Symbol).all?(&:default_regexp?)
end
end
|
#simulator ⇒ Object
49
50
51
52
53
54
|
# File 'actionpack/lib/action_dispatch/journey/routes.rb', line 49
def simulator
@simulator ||= begin
gtg = GTG::Builder.new(ast).transition_table
GTG::Simulator.new(gtg)
end
end
|