Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
f0de4734
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
f0de4734
编写于
7月 23, 2020
作者:
R
Ryuta Kamizono
提交者:
GitHub
7月 23, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #39903 from composerinteralia/fewer-passes-through-ast
Consolidate passes through path ast
上级
ef4cb399
6a2adeb3
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
12 addition
and
14 deletion
+12
-14
actionpack/lib/action_dispatch/routing/mapper.rb
actionpack/lib/action_dispatch/routing/mapper.rb
+12
-14
未找到文件。
actionpack/lib/action_dispatch/routing/mapper.rb
浏览文件 @
f0de4734
...
...
@@ -128,9 +128,19 @@ def initialize(set:, ast:, controller:, default_action:, to:, formatted:, via:,
@internal
=
options
.
delete
(
:internal
)
@scope_options
=
scope_params
[
:options
]
path_params
=
ast
.
find_all
(
&
:symbol?
).
map
(
&
:to_sym
)
path_params
=
[]
wildcard_options
=
{}
ast
.
each
do
|
node
|
if
node
.
symbol?
path_params
<<
node
.
to_sym
elsif
formatted
!=
false
&&
node
.
star?
# Add a constraint for wildcard route to make it non-greedy and match the
# optional format part of the route by default.
wildcard_options
[
node
.
name
.
to_sym
]
||=
/.+?/
end
end
options
=
add_wildcard_options
(
options
,
formatted
,
ast
)
options
=
wildcard_options
.
merge!
(
options
)
options
=
normalize_options!
(
options
,
path_params
,
scope_params
[
:module
])
...
...
@@ -233,18 +243,6 @@ def intern(object)
object
.
is_a?
(
String
)
?
-
object
:
object
end
def
add_wildcard_options
(
options
,
formatted
,
path_ast
)
# Add a constraint for wildcard route to make it non-greedy and match the
# optional format part of the route by default.
if
formatted
!=
false
path_ast
.
grep
(
Journey
::
Nodes
::
Star
).
each_with_object
({})
{
|
node
,
hash
|
hash
[
node
.
name
.
to_sym
]
||=
/.+?/
}.
merge
options
else
options
end
end
def
normalize_options!
(
options
,
path_params
,
modyoule
)
if
path_params
.
include?
(
:controller
)
raise
ArgumentError
,
":controller segment is not allowed within a namespace block"
if
modyoule
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录