codeminer 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/codeminer.gemspec +28 -0
- data/lib/codeminer.rb +112 -0
- data/lib/codeminer/expression_processor.rb +29 -0
- data/lib/codeminer/expressions/alias_expression.rb +23 -0
- data/lib/codeminer/expressions/ambiguous_operator_expression.rb +27 -0
- data/lib/codeminer/expressions/aref_assign_expression.rb +23 -0
- data/lib/codeminer/expressions/aref_field_expression.rb +28 -0
- data/lib/codeminer/expressions/arguments_expression.rb +29 -0
- data/lib/codeminer/expressions/array_expression.rb +22 -0
- data/lib/codeminer/expressions/attribute_assign_expression.rb +35 -0
- data/lib/codeminer/expressions/backref_variable_expression.rb +22 -0
- data/lib/codeminer/expressions/begin_expression.rb +38 -0
- data/lib/codeminer/expressions/binary_expression.rb +31 -0
- data/lib/codeminer/expressions/block_expression.rb +24 -0
- data/lib/codeminer/expressions/block_param_expression.rb +24 -0
- data/lib/codeminer/expressions/body_expression.rb +35 -0
- data/lib/codeminer/expressions/bodystmt_expression.rb +25 -0
- data/lib/codeminer/expressions/break_expression.rb +22 -0
- data/lib/codeminer/expressions/call_expression.rb +35 -0
- data/lib/codeminer/expressions/case_expression.rb +27 -0
- data/lib/codeminer/expressions/class_expression.rb +28 -0
- data/lib/codeminer/expressions/class_variable_assign_expression.rb +27 -0
- data/lib/codeminer/expressions/class_variable_expression.rb +22 -0
- data/lib/codeminer/expressions/colon2_assign_expression.rb +23 -0
- data/lib/codeminer/expressions/colon2_expression.rb +27 -0
- data/lib/codeminer/expressions/colon3_assign_expression.rb +23 -0
- data/lib/codeminer/expressions/colon3_expression.rb +26 -0
- data/lib/codeminer/expressions/command_expression.rb +30 -0
- data/lib/codeminer/expressions/condition_expression.rb +25 -0
- data/lib/codeminer/expressions/constant_assign_expression.rb +27 -0
- data/lib/codeminer/expressions/constant_variable_expression.rb +24 -0
- data/lib/codeminer/expressions/defined_expression.rb +22 -0
- data/lib/codeminer/expressions/defn_expression.rb +24 -0
- data/lib/codeminer/expressions/defs_expression.rb +29 -0
- data/lib/codeminer/expressions/destructured_param_expression.rb +24 -0
- data/lib/codeminer/expressions/dynamic_string_expression.rb +36 -0
- data/lib/codeminer/expressions/dynamic_symbol_expression.rb +22 -0
- data/lib/codeminer/expressions/else_expression.rb +26 -0
- data/lib/codeminer/expressions/empty_expression.rb +19 -0
- data/lib/codeminer/expressions/ensure_expression.rb +22 -0
- data/lib/codeminer/expressions/expression.rb +24 -0
- data/lib/codeminer/expressions/expression_container.rb +41 -0
- data/lib/codeminer/expressions/false_expression.rb +22 -0
- data/lib/codeminer/expressions/field_expression.rb +27 -0
- data/lib/codeminer/expressions/for_expression.rb +24 -0
- data/lib/codeminer/expressions/global_variable_assign_expression.rb +27 -0
- data/lib/codeminer/expressions/global_variable_expression.rb +22 -0
- data/lib/codeminer/expressions/hash_expression.rb +22 -0
- data/lib/codeminer/expressions/hash_pair_expression.rb +23 -0
- data/lib/codeminer/expressions/instance_variable_assign_expression.rb +27 -0
- data/lib/codeminer/expressions/instance_variable_expression.rb +22 -0
- data/lib/codeminer/expressions/int_expression.rb +24 -0
- data/lib/codeminer/expressions/keyword_param_expression.rb +31 -0
- data/lib/codeminer/expressions/lambda_expression.rb +25 -0
- data/lib/codeminer/expressions/local_assign_expression.rb +35 -0
- data/lib/codeminer/expressions/local_variable_expression.rb +24 -0
- data/lib/codeminer/expressions/magic_comment_expression.rb +23 -0
- data/lib/codeminer/expressions/module_expression.rb +27 -0
- data/lib/codeminer/expressions/multiple_assignment_expression.rb +25 -0
- data/lib/codeminer/expressions/next_expression.rb +22 -0
- data/lib/codeminer/expressions/nil_expression.rb +22 -0
- data/lib/codeminer/expressions/op_assign_expression.rb +26 -0
- data/lib/codeminer/expressions/optional_param_expression.rb +31 -0
- data/lib/codeminer/expressions/params_expression.rb +67 -0
- data/lib/codeminer/expressions/positional_param_expression.rb +32 -0
- data/lib/codeminer/expressions/range_expression.rb +28 -0
- data/lib/codeminer/expressions/redo_expression.rb +21 -0
- data/lib/codeminer/expressions/regexp_expression.rb +26 -0
- data/lib/codeminer/expressions/rescue_body_expression.rb +22 -0
- data/lib/codeminer/expressions/rescue_expression.rb +25 -0
- data/lib/codeminer/expressions/retry_expression.rb +21 -0
- data/lib/codeminer/expressions/return_expression.rb +26 -0
- data/lib/codeminer/expressions/root_expression.rb +22 -0
- data/lib/codeminer/expressions/sclass_expression.rb +23 -0
- data/lib/codeminer/expressions/self_expression.rb +22 -0
- data/lib/codeminer/expressions/splat_expression.rb +24 -0
- data/lib/codeminer/expressions/string_content_expression.rb +29 -0
- data/lib/codeminer/expressions/string_embedded_expression.rb +22 -0
- data/lib/codeminer/expressions/string_expression.rb +45 -0
- data/lib/codeminer/expressions/super_expression.rb +26 -0
- data/lib/codeminer/expressions/symbol_expression.rb +32 -0
- data/lib/codeminer/expressions/true_expression.rb +22 -0
- data/lib/codeminer/expressions/unary_expression.rb +23 -0
- data/lib/codeminer/expressions/undef_expression.rb +22 -0
- data/lib/codeminer/expressions/unknown_expression.rb +35 -0
- data/lib/codeminer/expressions/until_expression.rb +23 -0
- data/lib/codeminer/expressions/variable_expression.rb +20 -0
- data/lib/codeminer/expressions/void_expression.rb +21 -0
- data/lib/codeminer/expressions/when_expression.rb +24 -0
- data/lib/codeminer/expressions/while_expression.rb +23 -0
- data/lib/codeminer/expressions/xstring_expression.rb +24 -0
- data/lib/codeminer/expressions/yield_expression.rb +22 -0
- data/lib/codeminer/parser.rb +215 -0
- data/lib/codeminer/processors/argument_processor.rb +25 -0
- data/lib/codeminer/processors/array_processor.rb +86 -0
- data/lib/codeminer/processors/assignment_processor.rb +42 -0
- data/lib/codeminer/processors/binary_processor.rb +12 -0
- data/lib/codeminer/processors/call_processor.rb +32 -0
- data/lib/codeminer/processors/class_processor.rb +19 -0
- data/lib/codeminer/processors/command_processor.rb +15 -0
- data/lib/codeminer/processors/condition_processor.rb +59 -0
- data/lib/codeminer/processors/default_processor.rb +33 -0
- data/lib/codeminer/processors/hash_processor.rb +27 -0
- data/lib/codeminer/processors/loop_processor.rb +30 -0
- data/lib/codeminer/processors/method_processor.rb +58 -0
- data/lib/codeminer/processors/params_processor.rb +97 -0
- data/lib/codeminer/processors/range_processor.rb +15 -0
- data/lib/codeminer/processors/regexp_processor.rb +27 -0
- data/lib/codeminer/processors/return_processor.rb +15 -0
- data/lib/codeminer/processors/string_processor.rb +79 -0
- data/lib/codeminer/processors/symbol_processor.rb +31 -0
- data/lib/codeminer/processors/token_processor.rb +41 -0
- data/lib/codeminer/processors/variable_processor.rb +70 -0
- data/lib/codeminer/source_extract.rb +120 -0
- data/lib/codeminer/substitution.rb +48 -0
- data/lib/codeminer/token.rb +19 -0
- metadata +172 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 87e6c5fc088b7426bbd290c30432131c9eef2a01
|
4
|
+
data.tar.gz: b1bbc69b9634a247d1d59585621fec02a92e7e17
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: eb5540dab6c63c8d8bfd1c2116f50318325559453b90fb2143041b12c623eb6bc86307b81eb9c0996ea26537a81a78f87f4f686d0e2729b4acd321c8cad0dd3a
|
7
|
+
data.tar.gz: 3f90069d2fb224d74b31c581b14bca0a27785de8d3b64553a8f5dc2d27e157f1847c8ef2a1d5421de80c8f9dd120fb4f14015485680e2d01d2500a5ea2184425
|
data/codeminer.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'codeminer'
|
3
|
+
s.version = '0.1.0'
|
4
|
+
s.date = '2014-06-30'
|
5
|
+
|
6
|
+
s.summary = 'Mines Ruby code'
|
7
|
+
s.description = 'Streamlined parsing and processing of Ruby code using Ripper'
|
8
|
+
|
9
|
+
s.authors = ['Jacob Richardson']
|
10
|
+
s.email = 'jacob.ninja.dev@gmail.com'
|
11
|
+
|
12
|
+
s.require_paths = %w[lib]
|
13
|
+
|
14
|
+
s.add_development_dependency('test-unit', '2.5.5')
|
15
|
+
|
16
|
+
s.files = %w[
|
17
|
+
codeminer.gemspec
|
18
|
+
lib/codeminer.rb
|
19
|
+
lib/codeminer/parser.rb
|
20
|
+
lib/codeminer/expression_processor.rb
|
21
|
+
lib/codeminer/source_extract.rb
|
22
|
+
lib/codeminer/substitution.rb
|
23
|
+
lib/codeminer/token.rb
|
24
|
+
]
|
25
|
+
s.files += Dir.glob('lib/codeminer/expressions/*.rb')
|
26
|
+
s.files += Dir.glob('lib/codeminer/processors/*.rb')
|
27
|
+
|
28
|
+
end
|
data/lib/codeminer.rb
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
require File.expand_path('../codeminer/source_extract', __FILE__)
|
2
|
+
|
3
|
+
require File.expand_path('../codeminer/expressions/expression', __FILE__)
|
4
|
+
require File.expand_path('../codeminer/expressions/alias_expression', __FILE__)
|
5
|
+
require File.expand_path('../codeminer/expressions/ambiguous_operator_expression', __FILE__)
|
6
|
+
require File.expand_path('../codeminer/expressions/aref_assign_expression', __FILE__)
|
7
|
+
require File.expand_path('../codeminer/expressions/aref_field_expression', __FILE__)
|
8
|
+
require File.expand_path('../codeminer/expressions/array_expression', __FILE__)
|
9
|
+
require File.expand_path('../codeminer/expressions/arguments_expression', __FILE__)
|
10
|
+
require File.expand_path('../codeminer/expressions/attribute_assign_expression', __FILE__)
|
11
|
+
require File.expand_path('../codeminer/expressions/backref_variable_expression', __FILE__)
|
12
|
+
require File.expand_path('../codeminer/expressions/begin_expression', __FILE__)
|
13
|
+
require File.expand_path('../codeminer/expressions/binary_expression', __FILE__)
|
14
|
+
require File.expand_path('../codeminer/expressions/block_expression', __FILE__)
|
15
|
+
require File.expand_path('../codeminer/expressions/block_param_expression', __FILE__)
|
16
|
+
require File.expand_path('../codeminer/expressions/body_expression', __FILE__)
|
17
|
+
require File.expand_path('../codeminer/expressions/bodystmt_expression', __FILE__)
|
18
|
+
require File.expand_path('../codeminer/expressions/break_expression', __FILE__)
|
19
|
+
require File.expand_path('../codeminer/expressions/call_expression', __FILE__)
|
20
|
+
require File.expand_path('../codeminer/expressions/case_expression', __FILE__)
|
21
|
+
require File.expand_path('../codeminer/expressions/class_expression', __FILE__)
|
22
|
+
require File.expand_path('../codeminer/expressions/class_variable_assign_expression', __FILE__)
|
23
|
+
require File.expand_path('../codeminer/expressions/class_variable_expression', __FILE__)
|
24
|
+
require File.expand_path('../codeminer/expressions/colon2_assign_expression', __FILE__)
|
25
|
+
require File.expand_path('../codeminer/expressions/colon2_expression', __FILE__)
|
26
|
+
require File.expand_path('../codeminer/expressions/colon3_assign_expression', __FILE__)
|
27
|
+
require File.expand_path('../codeminer/expressions/colon3_expression', __FILE__)
|
28
|
+
require File.expand_path('../codeminer/expressions/command_expression', __FILE__)
|
29
|
+
require File.expand_path('../codeminer/expressions/condition_expression', __FILE__)
|
30
|
+
require File.expand_path('../codeminer/expressions/constant_assign_expression', __FILE__)
|
31
|
+
require File.expand_path('../codeminer/expressions/constant_variable_expression', __FILE__)
|
32
|
+
require File.expand_path('../codeminer/expressions/defined_expression', __FILE__)
|
33
|
+
require File.expand_path('../codeminer/expressions/defn_expression', __FILE__)
|
34
|
+
require File.expand_path('../codeminer/expressions/defs_expression', __FILE__)
|
35
|
+
require File.expand_path('../codeminer/expressions/destructured_param_expression', __FILE__)
|
36
|
+
require File.expand_path('../codeminer/expressions/dynamic_symbol_expression', __FILE__)
|
37
|
+
require File.expand_path('../codeminer/expressions/else_expression', __FILE__)
|
38
|
+
require File.expand_path('../codeminer/expressions/empty_expression', __FILE__)
|
39
|
+
require File.expand_path('../codeminer/expressions/ensure_expression', __FILE__)
|
40
|
+
require File.expand_path('../codeminer/expressions/false_expression', __FILE__)
|
41
|
+
require File.expand_path('../codeminer/expressions/field_expression', __FILE__)
|
42
|
+
require File.expand_path('../codeminer/expressions/for_expression', __FILE__)
|
43
|
+
require File.expand_path('../codeminer/expressions/global_variable_assign_expression', __FILE__)
|
44
|
+
require File.expand_path('../codeminer/expressions/global_variable_expression', __FILE__)
|
45
|
+
require File.expand_path('../codeminer/expressions/hash_expression', __FILE__)
|
46
|
+
require File.expand_path('../codeminer/expressions/hash_pair_expression', __FILE__)
|
47
|
+
require File.expand_path('../codeminer/expressions/instance_variable_assign_expression', __FILE__)
|
48
|
+
require File.expand_path('../codeminer/expressions/instance_variable_expression', __FILE__)
|
49
|
+
require File.expand_path('../codeminer/expressions/int_expression', __FILE__)
|
50
|
+
require File.expand_path('../codeminer/expressions/keyword_param_expression', __FILE__)
|
51
|
+
require File.expand_path('../codeminer/expressions/lambda_expression', __FILE__)
|
52
|
+
require File.expand_path('../codeminer/expressions/local_assign_expression', __FILE__)
|
53
|
+
require File.expand_path('../codeminer/expressions/local_variable_expression', __FILE__)
|
54
|
+
require File.expand_path('../codeminer/expressions/magic_comment_expression', __FILE__)
|
55
|
+
require File.expand_path('../codeminer/expressions/module_expression', __FILE__)
|
56
|
+
require File.expand_path('../codeminer/expressions/multiple_assignment_expression', __FILE__)
|
57
|
+
require File.expand_path('../codeminer/expressions/next_expression', __FILE__)
|
58
|
+
require File.expand_path('../codeminer/expressions/nil_expression', __FILE__)
|
59
|
+
require File.expand_path('../codeminer/expressions/op_assign_expression', __FILE__)
|
60
|
+
require File.expand_path('../codeminer/expressions/optional_param_expression', __FILE__)
|
61
|
+
require File.expand_path('../codeminer/expressions/params_expression', __FILE__)
|
62
|
+
require File.expand_path('../codeminer/expressions/expression_container', __FILE__)
|
63
|
+
require File.expand_path('../codeminer/expressions/positional_param_expression', __FILE__)
|
64
|
+
require File.expand_path('../codeminer/expressions/range_expression', __FILE__)
|
65
|
+
require File.expand_path('../codeminer/expressions/redo_expression', __FILE__)
|
66
|
+
require File.expand_path('../codeminer/expressions/regexp_expression', __FILE__)
|
67
|
+
require File.expand_path('../codeminer/expressions/rescue_body_expression', __FILE__)
|
68
|
+
require File.expand_path('../codeminer/expressions/rescue_expression', __FILE__)
|
69
|
+
require File.expand_path('../codeminer/expressions/retry_expression', __FILE__)
|
70
|
+
require File.expand_path('../codeminer/expressions/return_expression', __FILE__)
|
71
|
+
require File.expand_path('../codeminer/expressions/root_expression', __FILE__)
|
72
|
+
require File.expand_path('../codeminer/expressions/sclass_expression', __FILE__)
|
73
|
+
require File.expand_path('../codeminer/expressions/self_expression', __FILE__)
|
74
|
+
require File.expand_path('../codeminer/expressions/splat_expression', __FILE__)
|
75
|
+
require File.expand_path('../codeminer/expressions/string_expression', __FILE__)
|
76
|
+
require File.expand_path('../codeminer/expressions/string_content_expression', __FILE__)
|
77
|
+
require File.expand_path('../codeminer/expressions/string_embedded_expression', __FILE__)
|
78
|
+
require File.expand_path('../codeminer/expressions/super_expression', __FILE__)
|
79
|
+
require File.expand_path('../codeminer/expressions/symbol_expression', __FILE__)
|
80
|
+
require File.expand_path('../codeminer/expressions/true_expression', __FILE__)
|
81
|
+
require File.expand_path('../codeminer/expressions/unknown_expression', __FILE__)
|
82
|
+
require File.expand_path('../codeminer/expressions/unary_expression', __FILE__)
|
83
|
+
require File.expand_path('../codeminer/expressions/undef_expression', __FILE__)
|
84
|
+
require File.expand_path('../codeminer/expressions/until_expression', __FILE__)
|
85
|
+
require File.expand_path('../codeminer/expressions/variable_expression', __FILE__)
|
86
|
+
require File.expand_path('../codeminer/expressions/void_expression', __FILE__)
|
87
|
+
require File.expand_path('../codeminer/expressions/when_expression', __FILE__)
|
88
|
+
require File.expand_path('../codeminer/expressions/while_expression', __FILE__)
|
89
|
+
require File.expand_path('../codeminer/expressions/xstring_expression', __FILE__)
|
90
|
+
require File.expand_path('../codeminer/expressions/yield_expression', __FILE__)
|
91
|
+
|
92
|
+
require File.expand_path('../codeminer/token', __FILE__)
|
93
|
+
require File.expand_path('../codeminer/parser', __FILE__)
|
94
|
+
require File.expand_path('../codeminer/substitution', __FILE__)
|
95
|
+
|
96
|
+
module CodeMiner
|
97
|
+
|
98
|
+
ParseError = Class.new(RuntimeError)
|
99
|
+
|
100
|
+
def self.parse(code)
|
101
|
+
Parser.parse(code)
|
102
|
+
end
|
103
|
+
|
104
|
+
def self.process(code, processors)
|
105
|
+
Parser.process(code, processors)
|
106
|
+
end
|
107
|
+
|
108
|
+
def self.sexp(code, formatters={})
|
109
|
+
Parser.sexp(code, formatters)
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
module ExpressionProcessor
|
4
|
+
|
5
|
+
Ripper::PARSER_EVENT_TABLE.each do |event, arity|
|
6
|
+
next if event == :parse_error
|
7
|
+
next if /_new\z/ =~ event.to_s and arity == 0
|
8
|
+
next if /_add\z/ =~ event.to_s
|
9
|
+
next if /_from_[a-z]+\z/ =~ event.to_s
|
10
|
+
|
11
|
+
define_method :"on_#{event}" do |*args|
|
12
|
+
super(*args).tap do |node|
|
13
|
+
invoke_processor(node, event)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def invoke_processor(node, event)
|
21
|
+
@processors.each do |p|
|
22
|
+
meth = :"process_#{event}"
|
23
|
+
p.public_send(meth, node) if p.respond_to?(meth)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class AliasExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :left, :right, :value
|
6
|
+
|
7
|
+
def initialize(left, right, src)
|
8
|
+
@left = left
|
9
|
+
@right = right
|
10
|
+
@src = src
|
11
|
+
end
|
12
|
+
|
13
|
+
def type
|
14
|
+
:alias
|
15
|
+
end
|
16
|
+
|
17
|
+
def each
|
18
|
+
[@left, @right]
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class AmbiguousOperatorExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :msg
|
6
|
+
|
7
|
+
def initialize(token, msg, src)
|
8
|
+
@token = token
|
9
|
+
@msg = msg
|
10
|
+
@src = src
|
11
|
+
end
|
12
|
+
|
13
|
+
def type
|
14
|
+
:ambiguous_operator
|
15
|
+
end
|
16
|
+
|
17
|
+
def value
|
18
|
+
@token.value
|
19
|
+
end
|
20
|
+
|
21
|
+
def each
|
22
|
+
[msg]
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class ArefAssignExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :body, :receiver, :value
|
6
|
+
|
7
|
+
def initialize(receiver, body, src)
|
8
|
+
@receiver = receiver
|
9
|
+
@body = body
|
10
|
+
@src = src
|
11
|
+
end
|
12
|
+
|
13
|
+
def type
|
14
|
+
:aref_assign
|
15
|
+
end
|
16
|
+
|
17
|
+
def each
|
18
|
+
[receiver, body]
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class ArefFieldExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :receiver, :args
|
6
|
+
|
7
|
+
def initialize(token, receiver, args, src)
|
8
|
+
@token = token
|
9
|
+
@receiver = receiver
|
10
|
+
@args = args
|
11
|
+
@src = src
|
12
|
+
end
|
13
|
+
|
14
|
+
def value
|
15
|
+
@token.value
|
16
|
+
end
|
17
|
+
|
18
|
+
def type
|
19
|
+
:aref_field
|
20
|
+
end
|
21
|
+
|
22
|
+
def each
|
23
|
+
[receiver, args]
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class ArgumentsExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :value, :token
|
6
|
+
|
7
|
+
def initialize(src=nil, token=nil)
|
8
|
+
@arguments = []
|
9
|
+
@src = src
|
10
|
+
@token = token
|
11
|
+
end
|
12
|
+
|
13
|
+
def add(exp)
|
14
|
+
@arguments << exp
|
15
|
+
adjust_src(exp.src_extract)
|
16
|
+
self
|
17
|
+
end
|
18
|
+
|
19
|
+
def type
|
20
|
+
:arguments
|
21
|
+
end
|
22
|
+
|
23
|
+
def each
|
24
|
+
@arguments
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class AttributeAssignExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :body
|
6
|
+
|
7
|
+
def initialize(field, body, src)
|
8
|
+
@field = field
|
9
|
+
@body = body
|
10
|
+
@src = src
|
11
|
+
end
|
12
|
+
|
13
|
+
def type
|
14
|
+
:attribute_assign
|
15
|
+
end
|
16
|
+
|
17
|
+
def token
|
18
|
+
@field.token
|
19
|
+
end
|
20
|
+
|
21
|
+
def value
|
22
|
+
token.value
|
23
|
+
end
|
24
|
+
|
25
|
+
def each
|
26
|
+
[receiver, @body]
|
27
|
+
end
|
28
|
+
|
29
|
+
def receiver
|
30
|
+
@field.receiver
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class BackrefVariableExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :value
|
6
|
+
|
7
|
+
def initialize(value, src)
|
8
|
+
@value = value
|
9
|
+
@src = src
|
10
|
+
end
|
11
|
+
|
12
|
+
def type
|
13
|
+
:backref_variable
|
14
|
+
end
|
15
|
+
|
16
|
+
def each
|
17
|
+
[]
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class BeginExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :bodystmt, :value
|
6
|
+
|
7
|
+
def initialize(bodystmt, src)
|
8
|
+
@bodystmt = bodystmt
|
9
|
+
@src = src
|
10
|
+
end
|
11
|
+
|
12
|
+
def type
|
13
|
+
:begin
|
14
|
+
end
|
15
|
+
|
16
|
+
def body
|
17
|
+
@bodystmt.body
|
18
|
+
end
|
19
|
+
|
20
|
+
def ensure
|
21
|
+
@bodystmt.ensure
|
22
|
+
end
|
23
|
+
|
24
|
+
def rescue
|
25
|
+
@bodystmt.rescue
|
26
|
+
end
|
27
|
+
|
28
|
+
def else
|
29
|
+
@bodystmt.else
|
30
|
+
end
|
31
|
+
|
32
|
+
def each
|
33
|
+
body.each
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class BinaryExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :left, :right
|
6
|
+
|
7
|
+
def initialize(token, left, right, src)
|
8
|
+
@token = token
|
9
|
+
@left = left
|
10
|
+
@right = right
|
11
|
+
@src = src
|
12
|
+
end
|
13
|
+
|
14
|
+
def each
|
15
|
+
[left, right]
|
16
|
+
end
|
17
|
+
|
18
|
+
def type
|
19
|
+
:binary
|
20
|
+
end
|
21
|
+
|
22
|
+
def value
|
23
|
+
@token.value
|
24
|
+
end
|
25
|
+
|
26
|
+
alias receiver left
|
27
|
+
alias body right
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|