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
@@ -0,0 +1,27 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class ConstantAssignExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :body
|
6
|
+
|
7
|
+
def initialize(token, body, src)
|
8
|
+
@token = token
|
9
|
+
@body = body
|
10
|
+
@src = src
|
11
|
+
end
|
12
|
+
|
13
|
+
def type
|
14
|
+
:constant_assign
|
15
|
+
end
|
16
|
+
|
17
|
+
def value
|
18
|
+
@token.value
|
19
|
+
end
|
20
|
+
|
21
|
+
def each
|
22
|
+
[@body]
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class ConstantVariableExpression < Expression
|
4
|
+
|
5
|
+
def initialize(token, src)
|
6
|
+
@token = token
|
7
|
+
@src = src
|
8
|
+
end
|
9
|
+
|
10
|
+
def value
|
11
|
+
@token.value
|
12
|
+
end
|
13
|
+
|
14
|
+
def type
|
15
|
+
:constant
|
16
|
+
end
|
17
|
+
|
18
|
+
def each
|
19
|
+
[]
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class DefinedExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :body, :value
|
6
|
+
|
7
|
+
def initialize(body, src)
|
8
|
+
@body = body
|
9
|
+
@src = src
|
10
|
+
end
|
11
|
+
|
12
|
+
def type
|
13
|
+
:defined
|
14
|
+
end
|
15
|
+
|
16
|
+
def each
|
17
|
+
[@body]
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class DefnExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :value, :params, :body
|
6
|
+
|
7
|
+
def initialize(name, params, body, src)
|
8
|
+
@value = name
|
9
|
+
@params = params
|
10
|
+
@body = body
|
11
|
+
@src = src
|
12
|
+
end
|
13
|
+
|
14
|
+
def type
|
15
|
+
:defn
|
16
|
+
end
|
17
|
+
|
18
|
+
def each
|
19
|
+
[@params, @body]
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class DefsExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :body, :receiver, :params
|
6
|
+
|
7
|
+
def initialize(receiver, token, params, body, src)
|
8
|
+
@receiver = receiver
|
9
|
+
@token = token
|
10
|
+
@params = params
|
11
|
+
@body = body
|
12
|
+
@src = src
|
13
|
+
end
|
14
|
+
|
15
|
+
def value
|
16
|
+
@token.value
|
17
|
+
end
|
18
|
+
|
19
|
+
def type
|
20
|
+
:defs
|
21
|
+
end
|
22
|
+
|
23
|
+
def each
|
24
|
+
[receiver, params, *body.each]
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class DestructuredParamExpression < Expression
|
4
|
+
|
5
|
+
def initialize(token, src)
|
6
|
+
@token = token
|
7
|
+
@src = src
|
8
|
+
end
|
9
|
+
|
10
|
+
def value
|
11
|
+
@token.value
|
12
|
+
end
|
13
|
+
|
14
|
+
def type
|
15
|
+
:destructured_param
|
16
|
+
end
|
17
|
+
|
18
|
+
def each
|
19
|
+
[]
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class DynamicStringExpression < Expression
|
4
|
+
|
5
|
+
def self.wrap(exp)
|
6
|
+
if exp.type == :dynamic_string
|
7
|
+
exp
|
8
|
+
else
|
9
|
+
new(exp, exp.src_extract)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
attr_reader :value
|
14
|
+
|
15
|
+
def initialize(*body, src)
|
16
|
+
@src = src
|
17
|
+
@body = body
|
18
|
+
end
|
19
|
+
|
20
|
+
def type
|
21
|
+
:dynamic_string
|
22
|
+
end
|
23
|
+
|
24
|
+
def each
|
25
|
+
@body
|
26
|
+
end
|
27
|
+
|
28
|
+
def add(string, src=string.src_extract)
|
29
|
+
@body << string
|
30
|
+
adjust_src(src)
|
31
|
+
self
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class DynamicSymbolExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :value
|
6
|
+
|
7
|
+
def initialize(*body, src)
|
8
|
+
@body = body
|
9
|
+
@src = src
|
10
|
+
end
|
11
|
+
|
12
|
+
def type
|
13
|
+
:dynamic_symbol
|
14
|
+
end
|
15
|
+
|
16
|
+
def each
|
17
|
+
@body
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class ElseExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :value, :consequence
|
6
|
+
|
7
|
+
def initialize(consequence, src)
|
8
|
+
@consequence = consequence
|
9
|
+
@src = src
|
10
|
+
end
|
11
|
+
|
12
|
+
def type
|
13
|
+
:else
|
14
|
+
end
|
15
|
+
|
16
|
+
def body
|
17
|
+
consequence
|
18
|
+
end
|
19
|
+
|
20
|
+
def each
|
21
|
+
consequence.each
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class EnsureExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :body, :value
|
6
|
+
|
7
|
+
def initialize(body, src)
|
8
|
+
@body = body
|
9
|
+
@src = src
|
10
|
+
end
|
11
|
+
|
12
|
+
def type
|
13
|
+
:ensure
|
14
|
+
end
|
15
|
+
|
16
|
+
def each
|
17
|
+
[*body.each]
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class Expression
|
4
|
+
|
5
|
+
include SourceExtract::Usage
|
6
|
+
|
7
|
+
attr_writer :src
|
8
|
+
|
9
|
+
def self.not_implemented(*attrs)
|
10
|
+
attrs.each do |attr|
|
11
|
+
define_method attr do |*|
|
12
|
+
raise NotImplementedError, "Need to define #{attr} on #{self.class}"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
attr_accessor :block, :args, :delimiter
|
18
|
+
attr_reader :token
|
19
|
+
|
20
|
+
not_implemented :<<, :each, :type, :value
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class ExpressionContainer < Expression
|
4
|
+
|
5
|
+
attr_reader :type, :value
|
6
|
+
|
7
|
+
def self.wrap(exp, type)
|
8
|
+
if exp.kind_of?(ExpressionContainer)
|
9
|
+
new(exp.each, type, exp.src_extract)
|
10
|
+
else
|
11
|
+
wrapped = exp.class == Array ? exp : [exp]
|
12
|
+
new(wrapped, type, exp.src_extract)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize(body, type, src=nil)
|
17
|
+
@body = body
|
18
|
+
@type = type
|
19
|
+
@src = src
|
20
|
+
end
|
21
|
+
|
22
|
+
def each
|
23
|
+
@body
|
24
|
+
end
|
25
|
+
|
26
|
+
def add(exp)
|
27
|
+
if exp.kind_of?(ExpressionContainer)
|
28
|
+
exp.each.each do |e|
|
29
|
+
@body << e
|
30
|
+
adjust_src(e.src_extract)
|
31
|
+
end
|
32
|
+
else
|
33
|
+
@body << exp
|
34
|
+
adjust_src(exp.src_extract)
|
35
|
+
end
|
36
|
+
self
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class FieldExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :body, :receiver
|
6
|
+
|
7
|
+
def initialize(receiver, token, src)
|
8
|
+
@receiver = receiver
|
9
|
+
@token = token
|
10
|
+
@src = src
|
11
|
+
end
|
12
|
+
|
13
|
+
def type
|
14
|
+
:field
|
15
|
+
end
|
16
|
+
|
17
|
+
def value
|
18
|
+
@token.value
|
19
|
+
end
|
20
|
+
|
21
|
+
def each
|
22
|
+
[@receiver]
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class ForExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :params, :receiver, :body, :value
|
6
|
+
|
7
|
+
def initialize(params, receiver, body, src)
|
8
|
+
@params = params
|
9
|
+
@receiver = receiver
|
10
|
+
@body = body
|
11
|
+
@src = src
|
12
|
+
end
|
13
|
+
|
14
|
+
def each
|
15
|
+
[@params, @receiver, @body]
|
16
|
+
end
|
17
|
+
|
18
|
+
def type
|
19
|
+
:for
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module CodeMiner
|
2
|
+
|
3
|
+
class GlobalVariableAssignExpression < Expression
|
4
|
+
|
5
|
+
attr_reader :body
|
6
|
+
|
7
|
+
def initialize(token, body, src)
|
8
|
+
@token = token
|
9
|
+
@body = body
|
10
|
+
@src = src
|
11
|
+
end
|
12
|
+
|
13
|
+
def type
|
14
|
+
:global_variable_assign
|
15
|
+
end
|
16
|
+
|
17
|
+
def value
|
18
|
+
@token.value
|
19
|
+
end
|
20
|
+
|
21
|
+
def each
|
22
|
+
[@body]
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|