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
|