Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
Brakeman
提交
fe38b257
B
Brakeman
项目概览
李少辉-开发者
/
Brakeman
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
Brakeman
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
fe38b257
编写于
2月 06, 2014
作者:
J
Justin Collins
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix HAML processing
上级
9146de53
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
50 addition
and
3 deletion
+50
-3
lib/brakeman/processors/haml_template_processor.rb
lib/brakeman/processors/haml_template_processor.rb
+50
-3
未找到文件。
lib/brakeman/processors/haml_template_processor.rb
浏览文件 @
fe38b257
...
...
@@ -3,6 +3,7 @@ require 'brakeman/processors/template_processor'
#Processes HAML templates.
class
Brakeman::HamlTemplateProcessor
<
Brakeman
::
TemplateProcessor
HAML_FORMAT_METHOD
=
/format_script_(true|false)_(true|false)_(true|false)_(true|false)_(true|false)_(true|false)_(true|false)/
HAML_HELPERS
=
s
(
:colon2
,
s
(
:const
,
:Haml
),
:Helpers
)
#Processes call, looking for template output
def
process_call
exp
...
...
@@ -37,9 +38,7 @@ class Brakeman::HamlTemplateProcessor < Brakeman::TemplateProcessor
else
case
method
.
to_s
when
"push_text"
s
=
Sexp
.
new
(
:output
,
out
)
@current_template
[
:outputs
]
<<
s
s
build_output_from_push_text
(
out
)
when
HAML_FORMAT_METHOD
if
$4
==
"true"
Sexp
.
new
:format_escaped
,
out
...
...
@@ -117,4 +116,52 @@ class Brakeman::HamlTemplateProcessor < Brakeman::TemplateProcessor
exp
.
target
.
value
==
:_hamlout
and
exp
.
method
==
:buffer
end
#HAML likes to put interpolated values into _hamlout.push_text
#but we want to handle those individually
def
build_output_from_push_text
exp
if
node_type?
exp
,
:string_interp
,
:dstr
exp
.
map!
do
|
e
|
if
sexp?
e
if
node_type?
e
,
:string_eval
,
:evstr
e
=
e
.
value
end
get_pushed_value
e
else
e
end
end
end
end
#Gets outputs from values interpolated into _hamlout.push_text
def
get_pushed_value
exp
return
exp
unless
sexp?
exp
case
exp
.
node_type
when
:format
exp
.
node_type
=
:output
@current_template
[
:outputs
]
<<
exp
exp
when
:format_escaped
exp
.
node_type
=
:escaped_output
@current_template
[
:outputs
]
<<
exp
exp
when
:str
,
:ignore
,
:output
,
:escaped_output
exp
when
:block
,
:rlist
,
:string_interp
,
:dstr
exp
.
map!
{
|
e
|
get_pushed_value
e
}
else
if
call?
exp
and
exp
.
target
==
HAML_HELPERS
and
exp
.
method
==
:html_escape
s
=
Sexp
.
new
(
:escaped_output
,
exp
.
first_arg
)
else
s
=
Sexp
.
new
(
:output
,
exp
)
end
s
.
line
(
exp
.
line
)
@current_template
[
:outputs
]
<<
s
s
end
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录