Class: ActionDispatch::Journey::Path::Pattern::AnchoredRegexp
Overview
Constant Summary
Visitors::Visitor::DISPATCH_CACHE
Instance Method Summary
collapse
Constructor Details
#initialize(separator, matchers) ⇒ AnchoredRegexp
Returns a new instance of AnchoredRegexp.
77
78
79
80
81
82
|
# File 'actionpack/lib/action_dispatch/journey/path/pattern.rb', line 77
def initialize(separator, matchers)
@separator = separator
@matchers = matchers
@separator_re = "([^#{separator}]+)"
super()
end
|
Instance Method Details
#accept(node) ⇒ Object
84
85
86
|
# File 'actionpack/lib/action_dispatch/journey/path/pattern.rb', line 84
def accept(node)
Pattern.dedup_regexp(%r{\A#{visit node}\Z})
end
|
#visit_CAT(node) ⇒ Object
88
89
90
|
# File 'actionpack/lib/action_dispatch/journey/path/pattern.rb', line 88
def visit_CAT(node)
"#{visit(node.left)}#{visit(node.right)}"
end
|
#visit_GROUP(node) ⇒ Object
101
102
103
|
# File 'actionpack/lib/action_dispatch/journey/path/pattern.rb', line 101
def visit_GROUP(node)
"(?:#{visit node.left})?"
end
|
#visit_LITERAL(node) ⇒ Object
Also known as:
visit_DOT
105
106
107
|
# File 'actionpack/lib/action_dispatch/journey/path/pattern.rb', line 105
def visit_LITERAL(node)
Regexp.escape(node.left)
end
|
#visit_OR(node) ⇒ Object
119
120
121
122
|
# File 'actionpack/lib/action_dispatch/journey/path/pattern.rb', line 119
def visit_OR(node)
children = node.children.map { |n| visit n }
"(?:#{children.join(?|)})"
end
|
#visit_SLASH(node) ⇒ Object
110
111
112
|
# File 'actionpack/lib/action_dispatch/journey/path/pattern.rb', line 110
def visit_SLASH(node)
node.left
end
|
#visit_STAR(node) ⇒ Object
114
115
116
117
|
# File 'actionpack/lib/action_dispatch/journey/path/pattern.rb', line 114
def visit_STAR(node)
re = @matchers[node.left.to_sym]
re ? "(#{re})" : "(.+)"
end
|
#visit_SYMBOL(node) ⇒ Object
92
93
94
95
96
97
98
99
|
# File 'actionpack/lib/action_dispatch/journey/path/pattern.rb', line 92
def visit_SYMBOL(node)
node = node.to_sym
return @separator_re unless @matchers.key?(node)
re = @matchers[node]
"(#{Regexp.union(re)})"
end
|