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.
Files changed (118) hide show
  1. checksums.yaml +7 -0
  2. data/codeminer.gemspec +28 -0
  3. data/lib/codeminer.rb +112 -0
  4. data/lib/codeminer/expression_processor.rb +29 -0
  5. data/lib/codeminer/expressions/alias_expression.rb +23 -0
  6. data/lib/codeminer/expressions/ambiguous_operator_expression.rb +27 -0
  7. data/lib/codeminer/expressions/aref_assign_expression.rb +23 -0
  8. data/lib/codeminer/expressions/aref_field_expression.rb +28 -0
  9. data/lib/codeminer/expressions/arguments_expression.rb +29 -0
  10. data/lib/codeminer/expressions/array_expression.rb +22 -0
  11. data/lib/codeminer/expressions/attribute_assign_expression.rb +35 -0
  12. data/lib/codeminer/expressions/backref_variable_expression.rb +22 -0
  13. data/lib/codeminer/expressions/begin_expression.rb +38 -0
  14. data/lib/codeminer/expressions/binary_expression.rb +31 -0
  15. data/lib/codeminer/expressions/block_expression.rb +24 -0
  16. data/lib/codeminer/expressions/block_param_expression.rb +24 -0
  17. data/lib/codeminer/expressions/body_expression.rb +35 -0
  18. data/lib/codeminer/expressions/bodystmt_expression.rb +25 -0
  19. data/lib/codeminer/expressions/break_expression.rb +22 -0
  20. data/lib/codeminer/expressions/call_expression.rb +35 -0
  21. data/lib/codeminer/expressions/case_expression.rb +27 -0
  22. data/lib/codeminer/expressions/class_expression.rb +28 -0
  23. data/lib/codeminer/expressions/class_variable_assign_expression.rb +27 -0
  24. data/lib/codeminer/expressions/class_variable_expression.rb +22 -0
  25. data/lib/codeminer/expressions/colon2_assign_expression.rb +23 -0
  26. data/lib/codeminer/expressions/colon2_expression.rb +27 -0
  27. data/lib/codeminer/expressions/colon3_assign_expression.rb +23 -0
  28. data/lib/codeminer/expressions/colon3_expression.rb +26 -0
  29. data/lib/codeminer/expressions/command_expression.rb +30 -0
  30. data/lib/codeminer/expressions/condition_expression.rb +25 -0
  31. data/lib/codeminer/expressions/constant_assign_expression.rb +27 -0
  32. data/lib/codeminer/expressions/constant_variable_expression.rb +24 -0
  33. data/lib/codeminer/expressions/defined_expression.rb +22 -0
  34. data/lib/codeminer/expressions/defn_expression.rb +24 -0
  35. data/lib/codeminer/expressions/defs_expression.rb +29 -0
  36. data/lib/codeminer/expressions/destructured_param_expression.rb +24 -0
  37. data/lib/codeminer/expressions/dynamic_string_expression.rb +36 -0
  38. data/lib/codeminer/expressions/dynamic_symbol_expression.rb +22 -0
  39. data/lib/codeminer/expressions/else_expression.rb +26 -0
  40. data/lib/codeminer/expressions/empty_expression.rb +19 -0
  41. data/lib/codeminer/expressions/ensure_expression.rb +22 -0
  42. data/lib/codeminer/expressions/expression.rb +24 -0
  43. data/lib/codeminer/expressions/expression_container.rb +41 -0
  44. data/lib/codeminer/expressions/false_expression.rb +22 -0
  45. data/lib/codeminer/expressions/field_expression.rb +27 -0
  46. data/lib/codeminer/expressions/for_expression.rb +24 -0
  47. data/lib/codeminer/expressions/global_variable_assign_expression.rb +27 -0
  48. data/lib/codeminer/expressions/global_variable_expression.rb +22 -0
  49. data/lib/codeminer/expressions/hash_expression.rb +22 -0
  50. data/lib/codeminer/expressions/hash_pair_expression.rb +23 -0
  51. data/lib/codeminer/expressions/instance_variable_assign_expression.rb +27 -0
  52. data/lib/codeminer/expressions/instance_variable_expression.rb +22 -0
  53. data/lib/codeminer/expressions/int_expression.rb +24 -0
  54. data/lib/codeminer/expressions/keyword_param_expression.rb +31 -0
  55. data/lib/codeminer/expressions/lambda_expression.rb +25 -0
  56. data/lib/codeminer/expressions/local_assign_expression.rb +35 -0
  57. data/lib/codeminer/expressions/local_variable_expression.rb +24 -0
  58. data/lib/codeminer/expressions/magic_comment_expression.rb +23 -0
  59. data/lib/codeminer/expressions/module_expression.rb +27 -0
  60. data/lib/codeminer/expressions/multiple_assignment_expression.rb +25 -0
  61. data/lib/codeminer/expressions/next_expression.rb +22 -0
  62. data/lib/codeminer/expressions/nil_expression.rb +22 -0
  63. data/lib/codeminer/expressions/op_assign_expression.rb +26 -0
  64. data/lib/codeminer/expressions/optional_param_expression.rb +31 -0
  65. data/lib/codeminer/expressions/params_expression.rb +67 -0
  66. data/lib/codeminer/expressions/positional_param_expression.rb +32 -0
  67. data/lib/codeminer/expressions/range_expression.rb +28 -0
  68. data/lib/codeminer/expressions/redo_expression.rb +21 -0
  69. data/lib/codeminer/expressions/regexp_expression.rb +26 -0
  70. data/lib/codeminer/expressions/rescue_body_expression.rb +22 -0
  71. data/lib/codeminer/expressions/rescue_expression.rb +25 -0
  72. data/lib/codeminer/expressions/retry_expression.rb +21 -0
  73. data/lib/codeminer/expressions/return_expression.rb +26 -0
  74. data/lib/codeminer/expressions/root_expression.rb +22 -0
  75. data/lib/codeminer/expressions/sclass_expression.rb +23 -0
  76. data/lib/codeminer/expressions/self_expression.rb +22 -0
  77. data/lib/codeminer/expressions/splat_expression.rb +24 -0
  78. data/lib/codeminer/expressions/string_content_expression.rb +29 -0
  79. data/lib/codeminer/expressions/string_embedded_expression.rb +22 -0
  80. data/lib/codeminer/expressions/string_expression.rb +45 -0
  81. data/lib/codeminer/expressions/super_expression.rb +26 -0
  82. data/lib/codeminer/expressions/symbol_expression.rb +32 -0
  83. data/lib/codeminer/expressions/true_expression.rb +22 -0
  84. data/lib/codeminer/expressions/unary_expression.rb +23 -0
  85. data/lib/codeminer/expressions/undef_expression.rb +22 -0
  86. data/lib/codeminer/expressions/unknown_expression.rb +35 -0
  87. data/lib/codeminer/expressions/until_expression.rb +23 -0
  88. data/lib/codeminer/expressions/variable_expression.rb +20 -0
  89. data/lib/codeminer/expressions/void_expression.rb +21 -0
  90. data/lib/codeminer/expressions/when_expression.rb +24 -0
  91. data/lib/codeminer/expressions/while_expression.rb +23 -0
  92. data/lib/codeminer/expressions/xstring_expression.rb +24 -0
  93. data/lib/codeminer/expressions/yield_expression.rb +22 -0
  94. data/lib/codeminer/parser.rb +215 -0
  95. data/lib/codeminer/processors/argument_processor.rb +25 -0
  96. data/lib/codeminer/processors/array_processor.rb +86 -0
  97. data/lib/codeminer/processors/assignment_processor.rb +42 -0
  98. data/lib/codeminer/processors/binary_processor.rb +12 -0
  99. data/lib/codeminer/processors/call_processor.rb +32 -0
  100. data/lib/codeminer/processors/class_processor.rb +19 -0
  101. data/lib/codeminer/processors/command_processor.rb +15 -0
  102. data/lib/codeminer/processors/condition_processor.rb +59 -0
  103. data/lib/codeminer/processors/default_processor.rb +33 -0
  104. data/lib/codeminer/processors/hash_processor.rb +27 -0
  105. data/lib/codeminer/processors/loop_processor.rb +30 -0
  106. data/lib/codeminer/processors/method_processor.rb +58 -0
  107. data/lib/codeminer/processors/params_processor.rb +97 -0
  108. data/lib/codeminer/processors/range_processor.rb +15 -0
  109. data/lib/codeminer/processors/regexp_processor.rb +27 -0
  110. data/lib/codeminer/processors/return_processor.rb +15 -0
  111. data/lib/codeminer/processors/string_processor.rb +79 -0
  112. data/lib/codeminer/processors/symbol_processor.rb +31 -0
  113. data/lib/codeminer/processors/token_processor.rb +41 -0
  114. data/lib/codeminer/processors/variable_processor.rb +70 -0
  115. data/lib/codeminer/source_extract.rb +120 -0
  116. data/lib/codeminer/substitution.rb +48 -0
  117. data/lib/codeminer/token.rb +19 -0
  118. metadata +172 -0
@@ -0,0 +1,22 @@
1
+ module CodeMiner
2
+
3
+ class GlobalVariableExpression < 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
+ :global_variable
14
+ end
15
+
16
+ def each
17
+ []
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -0,0 +1,22 @@
1
+ module CodeMiner
2
+
3
+ class HashExpression < Expression
4
+
5
+ attr_reader :pairs, :value
6
+
7
+ def initialize(pairs, src)
8
+ @pairs = pairs
9
+ @src = src
10
+ end
11
+
12
+ def type
13
+ :hash
14
+ end
15
+
16
+ def each
17
+ @pairs.flat_map(&:each)
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -0,0 +1,23 @@
1
+ module CodeMiner
2
+
3
+ class HashPairExpression < Expression
4
+
5
+ attr_reader :key, :value
6
+
7
+ def initialize(key, value, src)
8
+ @key = key
9
+ @value = value
10
+ @src = src
11
+ end
12
+
13
+ def type
14
+ :hash_pair
15
+ end
16
+
17
+ def each
18
+ [key, value]
19
+ end
20
+
21
+ end
22
+
23
+ end
@@ -0,0 +1,27 @@
1
+ module CodeMiner
2
+
3
+ class InstanceVariableAssignExpression < 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
+ :instance_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 InstanceVariableExpression < 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
+ :instance_variable
14
+ end
15
+
16
+ def each
17
+ []
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -0,0 +1,24 @@
1
+ module CodeMiner
2
+
3
+ class IntExpression < Expression
4
+
5
+ def initialize(token, src)
6
+ @token = token
7
+ @src = src
8
+ end
9
+
10
+ def type
11
+ :int
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,31 @@
1
+ module CodeMiner
2
+
3
+ class KeywordParamExpression < Expression
4
+
5
+ attr_reader :token, :value
6
+
7
+ def initialize(token, value, src)
8
+ @token = token
9
+ @value = value
10
+ @src = src
11
+ end
12
+
13
+ def type
14
+ :keyword_param
15
+ end
16
+
17
+ def variable
18
+ @token.value
19
+ end
20
+
21
+ def default
22
+ @value
23
+ end
24
+
25
+ def each
26
+ [@token, @value]
27
+ end
28
+
29
+ end
30
+
31
+ end
@@ -0,0 +1,25 @@
1
+ module CodeMiner
2
+
3
+ class LambdaExpression < Expression
4
+
5
+ attr_reader :args, :body, :value
6
+
7
+ def initialize(args, body, src)
8
+ @args = args
9
+ @body = body
10
+ @src = src
11
+ end
12
+
13
+ def type
14
+ :lambda
15
+ end
16
+
17
+ def each
18
+ [@args, @body]
19
+ end
20
+
21
+ alias params args
22
+
23
+ end
24
+
25
+ end
@@ -0,0 +1,35 @@
1
+ module CodeMiner
2
+
3
+ class LocalAssignExpression < Expression
4
+
5
+ attr_reader :receiver, :body
6
+
7
+ def initialize(receiver, body, src)
8
+ @receiver = receiver
9
+ @body = body
10
+ @src = src
11
+ end
12
+
13
+ def type
14
+ :assign
15
+ end
16
+
17
+ def value
18
+ @receiver.value
19
+ end
20
+
21
+ def line
22
+ @receiver.line
23
+ end
24
+
25
+ def column
26
+ @receiver.column
27
+ end
28
+
29
+ def each
30
+ [body]
31
+ end
32
+
33
+ end
34
+
35
+ end
@@ -0,0 +1,24 @@
1
+ module CodeMiner
2
+
3
+ class LocalVariableExpression < Expression
4
+
5
+ def initialize(token, src)
6
+ @token = token
7
+ @src = src
8
+ end
9
+
10
+ def type
11
+ :local_variable
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,23 @@
1
+ module CodeMiner
2
+
3
+ class MagicCommentExpression < Expression
4
+
5
+ attr_reader :value, :key
6
+
7
+ def initialize(key, value, src)
8
+ @key = key
9
+ @value = value
10
+ @src = src
11
+ end
12
+
13
+ def type
14
+ :magic_comment
15
+ end
16
+
17
+ def each
18
+ []
19
+ end
20
+
21
+ end
22
+
23
+ end
@@ -0,0 +1,27 @@
1
+ module CodeMiner
2
+
3
+ class ModuleExpression < 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
+ :module
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,25 @@
1
+ module CodeMiner
2
+
3
+ class MultipleAssignmentExpression < Expression
4
+
5
+ attr_reader :params, :values, :value
6
+
7
+ def initialize(params, values, src)
8
+ @params = params
9
+ @values = values
10
+ @src = src
11
+ end
12
+
13
+ def type
14
+ :massign
15
+ end
16
+
17
+ def each
18
+ [params, values]
19
+ end
20
+
21
+ alias lhs params
22
+
23
+ end
24
+
25
+ end
@@ -0,0 +1,22 @@
1
+ module CodeMiner
2
+
3
+ class NextExpression < Expression
4
+
5
+ attr_reader :value
6
+
7
+ def initialize(args, src)
8
+ @args = args
9
+ @src = src
10
+ end
11
+
12
+ def type
13
+ :next
14
+ end
15
+
16
+ def each
17
+ [@args]
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -0,0 +1,22 @@
1
+ module CodeMiner
2
+
3
+ class NilExpression < Expression
4
+
5
+ attr_reader :value
6
+
7
+ def initialize(token, src)
8
+ @token = token
9
+ @src = src
10
+ end
11
+
12
+ def type
13
+ :nil
14
+ end
15
+
16
+ def each
17
+ []
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -0,0 +1,26 @@
1
+ module CodeMiner
2
+
3
+ class OpAssignExpression < Expression
4
+
5
+ attr_reader :variable, :op, :body, :value
6
+
7
+ def initialize(variable, op, body, src)
8
+ @variable = variable
9
+ @op = op
10
+ @body = body
11
+ @src = src
12
+ end
13
+
14
+ def type
15
+ :op_assign
16
+ end
17
+
18
+ def each
19
+ [variable, op, body]
20
+ end
21
+
22
+ alias receiver variable
23
+
24
+ end
25
+
26
+ end
@@ -0,0 +1,31 @@
1
+ module CodeMiner
2
+
3
+ class OptionalParamExpression < Expression
4
+
5
+ attr_reader :token, :value
6
+
7
+ def initialize(token, value, src)
8
+ @token = token
9
+ @value = value
10
+ @src = src
11
+ end
12
+
13
+ def type
14
+ :optional_param
15
+ end
16
+
17
+ def variable
18
+ @token.value
19
+ end
20
+
21
+ def default
22
+ @value
23
+ end
24
+
25
+ def each
26
+ [@token, @value]
27
+ end
28
+
29
+ end
30
+
31
+ end