Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
312c3bfa
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,发现更多精彩内容 >>
提交
312c3bfa
编写于
11月 29, 2009
作者:
J
Joshua Peek
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Break down long match routing method
上级
5da01a92
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
53 addition
and
23 deletion
+53
-23
actionpack/lib/action_dispatch/routing/mapper.rb
actionpack/lib/action_dispatch/routing/mapper.rb
+53
-23
未找到文件。
actionpack/lib/action_dispatch/routing/mapper.rb
浏览文件 @
312c3bfa
...
...
@@ -202,6 +202,12 @@ def with_scope_level(kind, options = {})
end
module
Scoping
def
self
.
extended
(
object
)
object
.
instance_eval
do
@scope
=
{}
end
end
def
scope
(
*
args
)
options
=
args
.
extract_options!
...
...
@@ -249,9 +255,24 @@ def namespace(path)
def
constraints
(
constraints
=
{})
scope
(
:constraints
=>
constraints
)
{
yield
}
end
def
match
(
*
args
)
options
=
args
.
extract_options!
options
=
(
@scope
[
:options
]
||
{}).
merge
(
options
)
args
.
push
(
options
)
super
(
*
args
)
end
end
class
Constraints
def
new
(
app
,
constraints
=
[])
if
constraints
.
any?
super
(
app
,
constraints
)
else
app
end
end
def
initialize
(
app
,
constraints
=
[])
@app
,
@constraints
=
app
,
constraints
end
...
...
@@ -273,7 +294,6 @@ def call(env)
def
initialize
(
set
)
@set
=
set
@scope
=
{}
extend
Scoping
extend
Resources
...
...
@@ -313,7 +333,6 @@ def match(*args)
path
=
args
.
first
options
=
(
@scope
[
:options
]
||
{}).
merge
(
options
)
conditions
,
defaults
=
{},
{}
path
=
nil
if
path
==
""
...
...
@@ -345,29 +364,12 @@ def match(*args)
conditions
[
:request_method
]
=
Regexp
.
union
(
*
via
)
end
defaults
[
:controller
]
=
@scope
[
:controller
].
to_s
if
@scope
[
:controller
]
if
options
[
:to
].
respond_to?
(
:call
)
app
=
options
[
:to
]
defaults
.
delete
(
:controller
)
defaults
.
delete
(
:action
)
elsif
options
[
:to
].
is_a?
(
String
)
defaults
[
:controller
],
defaults
[
:action
]
=
options
[
:to
].
split
(
'#'
)
elsif
options
[
:to
].
is_a?
(
Symbol
)
defaults
[
:action
]
=
options
[
:to
].
to_s
end
app
||=
Routing
::
RouteSet
::
Dispatcher
.
new
(
:defaults
=>
defaults
)
defaults
[
:controller
]
||=
@scope
[
:controller
].
to_s
if
@scope
[
:controller
]
if
app
.
is_a?
(
Routing
::
RouteSet
::
Dispatcher
)
unless
defaults
.
include?
(
:controller
)
||
segment_keys
.
include?
(
"controller"
)
raise
ArgumentError
,
"missing :controller"
end
unless
defaults
.
include?
(
:action
)
||
segment_keys
.
include?
(
"action"
)
raise
ArgumentError
,
"missing :action"
end
end
app
=
initialize_app_endpoint
(
options
,
defaults
)
validate_defaults!
(
app
,
defaults
,
segment_keys
)
app
=
Constraints
.
new
(
app
,
blocks
)
app
=
Constraints
.
new
(
app
,
blocks
)
if
blocks
.
any?
@set
.
add_route
(
app
,
conditions
,
requirements
,
defaults
,
options
[
:as
])
self
...
...
@@ -383,6 +385,34 @@ def redirect(path, options = {})
end
private
def
initialize_app_endpoint
(
options
,
defaults
)
app
=
nil
if
options
[
:to
].
respond_to?
(
:call
)
app
=
options
[
:to
]
defaults
.
delete
(
:controller
)
defaults
.
delete
(
:action
)
elsif
options
[
:to
].
is_a?
(
String
)
defaults
[
:controller
],
defaults
[
:action
]
=
options
[
:to
].
split
(
'#'
)
elsif
options
[
:to
].
is_a?
(
Symbol
)
defaults
[
:action
]
=
options
[
:to
].
to_s
end
app
||
Routing
::
RouteSet
::
Dispatcher
.
new
(
:defaults
=>
defaults
)
end
def
validate_defaults!
(
app
,
defaults
,
segment_keys
)
return
unless
app
.
is_a?
(
Routing
::
RouteSet
::
Dispatcher
)
unless
defaults
.
include?
(
:controller
)
||
segment_keys
.
include?
(
"controller"
)
raise
ArgumentError
,
"missing :controller"
end
unless
defaults
.
include?
(
:action
)
||
segment_keys
.
include?
(
"action"
)
raise
ArgumentError
,
"missing :action"
end
end
def
map_method
(
method
,
*
args
,
&
block
)
options
=
args
.
extract_options!
options
[
:via
]
=
method
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录