codeminer 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|