Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
e7b8769c
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,发现更多精彩内容 >>
提交
e7b8769c
编写于
12月 16, 2013
作者:
J
Jeremy Kemper
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #13321 from mezis/fix-safebuffer-interpolation-master
Fixes interpolation on SafeBuffer
上级
4b4aeabb
a764938a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
37 addition
and
7 deletion
+37
-7
activesupport/lib/active_support/core_ext/string/output_safety.rb
...pport/lib/active_support/core_ext/string/output_safety.rb
+12
-7
activesupport/test/safe_buffer_test.rb
activesupport/test/safe_buffer_test.rb
+25
-0
未找到文件。
activesupport/lib/active_support/core_ext/string/output_safety.rb
浏览文件 @
e7b8769c
...
...
@@ -183,15 +183,14 @@ def +(other)
end
def
%
(
args
)
args
=
Array
(
args
).
map
do
|
arg
|
if
!
html_safe?
||
arg
.
html_safe?
arg
else
ERB
::
Util
.
h
(
arg
)
end
case
args
when
Hash
escaped_args
=
Hash
[
args
.
map
{
|
k
,
arg
|
[
k
,
html_escape_interpolated_argument
(
arg
)]
}]
else
escaped_args
=
Array
(
args
).
map
{
|
arg
|
html_escape_interpolated_argument
(
arg
)
}
end
self
.
class
.
new
(
super
(
args
))
self
.
class
.
new
(
super
(
escaped_
args
))
end
def
html_safe?
...
...
@@ -224,6 +223,12 @@ def #{unsafe_method}!(*args) # def capitalize!(*args)
EOT
end
end
private
def
html_escape_interpolated_argument
(
arg
)
(
!
html_safe?
||
arg
.
html_safe?
)
?
arg
:
ERB
::
Util
.
h
(
arg
)
end
end
end
...
...
activesupport/test/safe_buffer_test.rb
浏览文件 @
e7b8769c
...
...
@@ -140,4 +140,29 @@ def test_titleize
# should still be unsafe
assert
!
y
.
html_safe?
,
"should not be safe"
end
test
'Should work with interpolation (array argument)'
do
x
=
'foo %s bar'
.
html_safe
%
[
'qux'
]
assert_equal
'foo qux bar'
,
x
end
test
'Should work with interpolation (hash argument)'
do
x
=
'foo %{x} bar'
.
html_safe
%
{
x:
'qux'
}
assert_equal
'foo qux bar'
,
x
end
test
'Should escape unsafe interpolated args'
do
x
=
'foo %{x} bar'
.
html_safe
%
{
x:
'<br/>'
}
assert_equal
'foo <br/> bar'
,
x
end
test
'Should not escape safe interpolated args'
do
x
=
'foo %{x} bar'
.
html_safe
%
{
x:
'<br/>'
.
html_safe
}
assert_equal
'foo <br/> bar'
,
x
end
test
'Should interpolate to a safe string'
do
x
=
'foo %{x} bar'
.
html_safe
%
{
x:
'qux'
}
assert
x
.
html_safe?
,
'should be safe'
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录