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,24 @@
|
|
|
1
|
+
module CodeMiner
|
|
2
|
+
|
|
3
|
+
class BlockExpression < Expression
|
|
4
|
+
|
|
5
|
+
attr_reader :body, :params, :value
|
|
6
|
+
|
|
7
|
+
def initialize(body, params, src)
|
|
8
|
+
@body = body
|
|
9
|
+
@params = params
|
|
10
|
+
@src = src
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def type
|
|
14
|
+
:block
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def each
|
|
18
|
+
[@params, *Array(@body.each)]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module CodeMiner
|
|
2
|
+
|
|
3
|
+
class BlockParamExpression < Expression
|
|
4
|
+
|
|
5
|
+
def initialize(token, src)
|
|
6
|
+
@token = token
|
|
7
|
+
@src = src
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def type
|
|
11
|
+
:block_param
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def value
|
|
15
|
+
@token.value
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def each
|
|
19
|
+
[]
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module CodeMiner
|
|
2
|
+
|
|
3
|
+
class BodyExpression < Expression
|
|
4
|
+
|
|
5
|
+
def self.from(*expressions)
|
|
6
|
+
adjusted_src = expressions.first.src_extract.adjust(expressions.last.src_extract)
|
|
7
|
+
new(adjusted_src, expressions)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
attr_reader :value, :body
|
|
11
|
+
|
|
12
|
+
def initialize(src, body=[])
|
|
13
|
+
@src_fallback = src
|
|
14
|
+
@body = body
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def add(statement)
|
|
18
|
+
unless statement.kind_of?(VoidExpression)
|
|
19
|
+
adjust_src(statement.src_extract)
|
|
20
|
+
@body << statement
|
|
21
|
+
end
|
|
22
|
+
self
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def each
|
|
26
|
+
@body.each.to_a
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def type
|
|
30
|
+
:body
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module CodeMiner
|
|
2
|
+
|
|
3
|
+
class BodystmtExpression < Expression
|
|
4
|
+
|
|
5
|
+
attr_reader :body, :rescue, :ensure, :value, :else
|
|
6
|
+
|
|
7
|
+
def initialize(body, rescue_exp, else_exp, ensure_exp, src:)
|
|
8
|
+
@body = body
|
|
9
|
+
@rescue = rescue_exp
|
|
10
|
+
@ensure = ensure_exp
|
|
11
|
+
@else = else_exp
|
|
12
|
+
@src = src
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def type
|
|
16
|
+
:bodystmt
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def each
|
|
20
|
+
[*body.each, *[@rescue, @else, @ensure].compact]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module CodeMiner
|
|
2
|
+
|
|
3
|
+
class CallExpression < Expression
|
|
4
|
+
|
|
5
|
+
attr_reader :receiver, :args
|
|
6
|
+
|
|
7
|
+
def initialize(token, src, receiver: nil, arguments: nil)
|
|
8
|
+
@token = token
|
|
9
|
+
@src = src
|
|
10
|
+
@receiver = receiver
|
|
11
|
+
@args = arguments
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def type
|
|
15
|
+
:call
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def value
|
|
19
|
+
value = @token.value.lstrip
|
|
20
|
+
if value[0] == '.'
|
|
21
|
+
value[1..-1]
|
|
22
|
+
else
|
|
23
|
+
value
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def each
|
|
28
|
+
[@receiver, *[@args, @block].compact]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
alias body args
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module CodeMiner
|
|
2
|
+
|
|
3
|
+
class CaseExpression < Expression
|
|
4
|
+
|
|
5
|
+
attr_reader :test, :whens, :value
|
|
6
|
+
|
|
7
|
+
def initialize(test, whens, src)
|
|
8
|
+
@test = test
|
|
9
|
+
@whens = whens
|
|
10
|
+
@src = src
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def type
|
|
14
|
+
:case
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def else_exp
|
|
18
|
+
@whens.map(&:else).last
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def each
|
|
22
|
+
[@test, *@whens, *[else_exp].compact]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module CodeMiner
|
|
2
|
+
|
|
3
|
+
class ClassExpression < Expression
|
|
4
|
+
|
|
5
|
+
attr_reader :body, :parent
|
|
6
|
+
|
|
7
|
+
def initialize(token, parent, body, src)
|
|
8
|
+
@token = token
|
|
9
|
+
@parent = parent
|
|
10
|
+
@body = body
|
|
11
|
+
@src = src
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def value
|
|
15
|
+
@token.value
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def type
|
|
19
|
+
:class
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def each
|
|
23
|
+
[parent, body]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module CodeMiner
|
|
2
|
+
|
|
3
|
+
class ClassVariableAssignExpression < 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
|
+
:class_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
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module CodeMiner
|
|
2
|
+
|
|
3
|
+
class ClassVariableExpression < 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
|
+
:class_variable
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def each
|
|
17
|
+
[]
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module CodeMiner
|
|
2
|
+
|
|
3
|
+
class Colon2AssignExpression < 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
|
+
:colon2_assign
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def each
|
|
18
|
+
[receiver, body]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module CodeMiner
|
|
2
|
+
|
|
3
|
+
class Colon2Expression < 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
|
+
:colon2
|
|
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,23 @@
|
|
|
1
|
+
module CodeMiner
|
|
2
|
+
|
|
3
|
+
class Colon3AssignExpression < 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
|
+
:colon3_assign
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def each
|
|
18
|
+
[receiver, body]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module CodeMiner
|
|
2
|
+
|
|
3
|
+
class Colon3Expression < Expression
|
|
4
|
+
|
|
5
|
+
attr_reader :body
|
|
6
|
+
|
|
7
|
+
def initialize(token, src)
|
|
8
|
+
@token = token
|
|
9
|
+
@src = src
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def type
|
|
13
|
+
:colon3
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def value
|
|
17
|
+
token.value
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def each
|
|
21
|
+
[]
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module CodeMiner
|
|
2
|
+
|
|
3
|
+
class CommandExpression < Expression
|
|
4
|
+
|
|
5
|
+
attr_reader :args, :receiver
|
|
6
|
+
|
|
7
|
+
def initialize(token, args, src, receiver=nil)
|
|
8
|
+
@token = token
|
|
9
|
+
@args = args
|
|
10
|
+
@src = src
|
|
11
|
+
@receiver = receiver
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def value
|
|
15
|
+
@token.value
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def type
|
|
19
|
+
:command
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def each
|
|
23
|
+
[@receiver, @args].compact
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
alias body args
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module CodeMiner
|
|
2
|
+
|
|
3
|
+
class ConditionExpression < Expression
|
|
4
|
+
|
|
5
|
+
attr_reader :test, :consequence, :else_statement, :value
|
|
6
|
+
|
|
7
|
+
def initialize(test, consequence, else_statement, token, src)
|
|
8
|
+
@test = test
|
|
9
|
+
@consequence = consequence
|
|
10
|
+
@else_statement = else_statement
|
|
11
|
+
@token = token
|
|
12
|
+
@src = src
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def type
|
|
16
|
+
:condition
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def each
|
|
20
|
+
[@test, @consequence, @else_statement]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|