Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
Brakeman
提交
c839eaed
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 搜索 >>
提交
c839eaed
编写于
7月 27, 2015
作者:
J
Justin
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #692 from presidentbeef/remove_unchanged_sexp_process_code
Remove copied/unchanged/unused SexpProcessor code
上级
7bce22d4
271abd80
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
1 addition
and
120 deletion
+1
-120
lib/ruby_parser/bm_sexp_processor.rb
lib/ruby_parser/bm_sexp_processor.rb
+1
-120
未找到文件。
lib/ruby_parser/bm_sexp_processor.rb
浏览文件 @
c839eaed
...
...
@@ -72,14 +72,7 @@ class Brakeman::SexpProcessor
# now do a pass with the real processor (or generic)
meth
=
@processors
[
type
]
if
meth
then
if
$DEBUG
result
=
error_handler
(
type
)
do
self
.
send
(
meth
,
exp
)
end
else
result
=
self
.
send
(
meth
,
exp
)
end
result
=
self
.
send
(
meth
,
exp
)
else
result
=
self
.
process_default
(
exp
)
end
...
...
@@ -90,36 +83,6 @@ class Brakeman::SexpProcessor
result
end
def
error_handler
(
type
,
exp
=
nil
)
# :nodoc:
begin
return
yield
rescue
=>
err
warn
"
#{
err
.
class
}
Exception thrown while processing
#{
type
}
for sexp
#{
exp
.
inspect
}
#{
caller
.
inspect
}
"
if
$DEBUG
raise
end
end
##
# A fairly generic processor for a dummy node. Dummy nodes are used
# when your processor is doing a complicated rewrite that replaces
# the current sexp with multiple sexps.
#
# Bogus Example:
#
# def process_something(exp)
# return s(:dummy, process(exp), s(:extra, 42))
# end
def
process_dummy
(
exp
)
result
=
@expected
.
new
(
:dummy
)
rescue
@expected
.
new
until
exp
.
empty?
do
result
<<
self
.
process
(
exp
.
shift
)
end
result
end
##
# Add a scope level to the current env. Eg:
#
...
...
@@ -150,86 +113,4 @@ class Brakeman::SexpProcessor
self
.
context
.
shift
end
##
# I really hate this here, but I hate subdirs in my lib dir more...
# I guess it is kinda like shaving... I'll split this out when it
# itches too much...
class
Environment
def
initialize
@env
=
[]
@env
.
unshift
({})
end
def
all
@env
.
reverse
.
inject
{
|
env
,
scope
|
env
.
merge
scope
}
end
def
depth
@env
.
length
end
# TODO: depth_of
def
[]
name
hash
=
@env
.
find
{
|
closure
|
closure
.
has_key?
name
}
hash
[
name
]
if
hash
end
def
[]=
name
,
val
hash
=
@env
.
find
{
|
closure
|
closure
.
has_key?
name
}
||
@env
.
first
hash
[
name
]
=
val
end
def
scope
@env
.
unshift
({})
begin
yield
ensure
@env
.
shift
raise
"You went too far unextending env"
if
@env
.
empty?
end
end
end
end
class
Object
##
# deep_clone is the usual Marshalling hack to make a deep copy.
# It is rather slow, so use it sparingly. Helps with debugging
# SexpProcessors since you usually shift off sexps.
def
deep_clone
Marshal
.
load
(
Marshal
.
dump
(
self
))
end
end
##
# SexpProcessor base exception class.
class
SexpProcessorError
<
StandardError
;
end
##
# Raised by SexpProcessor if it sees a node type listed in its
# unsupported list.
class
UnsupportedNodeError
<
SexpProcessorError
;
end
##
# Raised by SexpProcessor if it is in strict mode and sees a node for
# which there is no processor available.
class
UnknownNodeError
<
SexpProcessorError
;
end
##
# Raised by SexpProcessor if a processor did not process every node in
# a sexp and @require_empty is true.
class
NotEmptyError
<
SexpProcessorError
;
end
##
# Raised if assert_type encounters an unexpected sexp type.
class
SexpTypeError
<
SexpProcessorError
;
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录