leftovers 0.8.0 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/README.md +7 -7
- data/docs/Configuration.md +141 -32
- data/docs/Custom-Precompilers.md +6 -0
- data/leftovers.gemspec +2 -1
- data/lib/config/actioncable.yml +36 -0
- data/lib/config/actionmailbox.yml +28 -0
- data/lib/config/actionmailer.yml +87 -11
- data/lib/config/actionpack.yml +130 -34
- data/lib/config/actiontext.yml +56 -0
- data/lib/config/actionview.yml +194 -44
- data/lib/config/activejob.yml +15 -8
- data/lib/config/activemodel.yml +175 -18
- data/lib/config/activerecord.yml +397 -86
- data/lib/config/activestorage.yml +26 -0
- data/lib/config/activesupport.yml +167 -24
- data/lib/config/leftovers.yml +48 -0
- data/lib/config/rails.yml +7 -3
- data/lib/config/railties.yml +7 -0
- data/lib/config/ruby.yml +438 -83
- data/lib/config/test-unit.yml +8 -0
- data/lib/leftovers/ast/array_node.rb +12 -0
- data/lib/leftovers/ast/block_node.rb +12 -0
- data/lib/leftovers/ast/builder.rb +24 -5
- data/lib/leftovers/ast/casgn_node.rb +20 -0
- data/lib/leftovers/ast/const_node.rb +15 -0
- data/lib/leftovers/ast/def_node.rb +15 -0
- data/lib/leftovers/ast/defs_node.rb +15 -0
- data/lib/leftovers/ast/false_node.rb +24 -0
- data/lib/leftovers/ast/has_arguments.rb +31 -0
- data/lib/leftovers/ast/hash_node.rb +17 -0
- data/lib/leftovers/ast/module_node.rb +16 -0
- data/lib/leftovers/ast/nil_node.rb +23 -0
- data/lib/leftovers/ast/node.rb +33 -90
- data/lib/leftovers/ast/numeric_node.rb +22 -0
- data/lib/leftovers/ast/send_node.rb +25 -0
- data/lib/leftovers/ast/str_node.rb +24 -0
- data/lib/leftovers/ast/sym_node.rb +25 -0
- data/lib/leftovers/ast/true_node.rb +24 -0
- data/lib/leftovers/ast/var_node.rb +14 -0
- data/lib/leftovers/ast/vasgn_node.rb +20 -0
- data/lib/leftovers/ast.rb +18 -0
- data/lib/leftovers/cli.rb +7 -1
- data/lib/leftovers/comparable_instance.rb +18 -0
- data/lib/leftovers/config_loader/argument_position_schema.rb +3 -1
- data/lib/leftovers/config_loader/array_schema.rb +53 -0
- data/lib/leftovers/config_loader/document_schema.rb +3 -2
- data/lib/leftovers/config_loader/dynamic_schema.rb +1 -0
- data/lib/leftovers/config_loader/has_value_schema.rb +4 -0
- data/lib/leftovers/config_loader/keyword_argument_schema.rb +13 -0
- data/lib/leftovers/config_loader/regexp_schema.rb +27 -0
- data/lib/leftovers/config_loader/rule_pattern_schema.rb +2 -0
- data/lib/leftovers/config_loader/scalar_value_schema.rb +8 -0
- data/lib/leftovers/config_loader/schema.rb +10 -0
- data/lib/leftovers/config_loader/string_enum_schema.rb +1 -1
- data/lib/leftovers/config_loader/string_pattern_schema.rb +1 -1
- data/lib/leftovers/config_loader/transform_schema.rb +12 -6
- data/lib/leftovers/config_loader/value_matcher_condition_schema.rb +13 -0
- data/lib/leftovers/config_loader/value_matcher_schema.rb +4 -1
- data/lib/leftovers/config_loader/value_or_array_schema.rb +2 -34
- data/lib/leftovers/config_loader/value_processor_schema.rb +2 -2
- data/lib/leftovers/config_loader.rb +11 -4
- data/lib/leftovers/definition_collection.rb +37 -0
- data/lib/leftovers/definition_node_set.rb +10 -2
- data/lib/leftovers/file.rb +1 -1
- data/lib/leftovers/file_collector/comments_processor.rb +1 -1
- data/lib/leftovers/file_collector/node_processor.rb +7 -7
- data/lib/leftovers/file_collector.rb +26 -32
- data/lib/leftovers/file_list.rb +3 -2
- data/lib/leftovers/matcher_builders/and.rb +26 -9
- data/lib/leftovers/matcher_builders/node.rb +32 -20
- data/lib/leftovers/matcher_builders/node_has_keyword_argument.rb +3 -1
- data/lib/leftovers/matcher_builders/node_pair_key.rb +16 -0
- data/lib/leftovers/matcher_builders/node_type.rb +9 -9
- data/lib/leftovers/matcher_builders/node_value.rb +23 -9
- data/lib/leftovers/matcher_builders/or.rb +22 -7
- data/lib/leftovers/matcher_builders/path.rb +3 -1
- data/lib/leftovers/matcher_builders.rb +1 -1
- data/lib/leftovers/matchers/all.rb +4 -0
- data/lib/leftovers/matchers/and.rb +4 -0
- data/lib/leftovers/matchers/any.rb +2 -0
- data/lib/leftovers/matchers/node_has_any_keyword_argument.rb +7 -4
- data/lib/leftovers/matchers/node_has_any_positional_argument_with_value.rb +5 -4
- data/lib/leftovers/matchers/node_has_positional_argument.rb +5 -1
- data/lib/leftovers/matchers/node_has_positional_argument_with_value.rb +6 -1
- data/lib/leftovers/matchers/node_has_receiver.rb +4 -0
- data/lib/leftovers/matchers/node_is_proc.rb +13 -0
- data/lib/leftovers/matchers/node_name.rb +9 -3
- data/lib/leftovers/matchers/node_pair_key.rb +23 -0
- data/lib/leftovers/matchers/node_pair_value.rb +7 -3
- data/lib/leftovers/matchers/node_path.rb +7 -3
- data/lib/leftovers/matchers/node_privacy.rb +7 -3
- data/lib/leftovers/matchers/node_scalar_value.rb +6 -1
- data/lib/leftovers/matchers/node_type.rb +7 -3
- data/lib/leftovers/matchers/not.rb +2 -0
- data/lib/leftovers/matchers/or.rb +2 -0
- data/lib/leftovers/matchers/path.rb +21 -0
- data/lib/leftovers/matchers.rb +3 -1
- data/lib/leftovers/merged_config.rb +26 -25
- data/lib/leftovers/parser.rb +7 -4
- data/lib/leftovers/precompilers.rb +5 -5
- data/lib/leftovers/processor_builders/action.rb +55 -37
- data/lib/leftovers/processor_builders/add_prefix.rb +18 -10
- data/lib/leftovers/processor_builders/add_suffix.rb +18 -10
- data/lib/leftovers/processor_builders/argument.rb +28 -11
- data/lib/leftovers/processor_builders/dynamic.rb +37 -31
- data/lib/leftovers/processor_builders/each.rb +82 -10
- data/lib/leftovers/processor_builders/itself.rb +2 -2
- data/lib/leftovers/processor_builders/keyword.rb +7 -6
- data/lib/leftovers/processor_builders/keyword_argument.rb +4 -2
- data/lib/leftovers/processor_builders/receiver.rb +13 -0
- data/lib/leftovers/processor_builders/transform.rb +55 -44
- data/lib/leftovers/processor_builders/transform_chain.rb +1 -1
- data/lib/leftovers/processor_builders/transform_set.rb +9 -29
- data/lib/leftovers/processor_builders/value.rb +4 -4
- data/lib/leftovers/processor_builders.rb +1 -3
- data/lib/leftovers/processors/add_call.rb +14 -0
- data/lib/leftovers/processors/add_definition_node.rb +16 -0
- data/lib/leftovers/processors/add_dynamic_prefix.rb +29 -0
- data/lib/leftovers/processors/add_dynamic_suffix.rb +29 -0
- data/lib/leftovers/{value_processors → processors}/add_prefix.rb +7 -3
- data/lib/leftovers/{value_processors → processors}/add_suffix.rb +7 -3
- data/lib/leftovers/processors/append_sym.rb +13 -0
- data/lib/leftovers/{value_processors → processors}/camelize.rb +7 -3
- data/lib/leftovers/{value_processors → processors}/capitalize.rb +7 -3
- data/lib/leftovers/{value_processors → processors}/deconstantize.rb +7 -3
- data/lib/leftovers/{value_processors → processors}/delete_after.rb +9 -5
- data/lib/leftovers/processors/delete_after_last.rb +26 -0
- data/lib/leftovers/processors/delete_before.rb +27 -0
- data/lib/leftovers/processors/delete_before_last.rb +27 -0
- data/lib/leftovers/{value_processors → processors}/delete_prefix.rb +7 -3
- data/lib/leftovers/{value_processors → processors}/delete_suffix.rb +7 -3
- data/lib/leftovers/{value_processors → processors}/demodulize.rb +7 -3
- data/lib/leftovers/{value_processors → processors}/downcase.rb +7 -3
- data/lib/leftovers/processors/each.rb +25 -0
- data/lib/leftovers/processors/each_for_definition_set.rb +33 -0
- data/lib/leftovers/processors/each_keyword.rb +29 -0
- data/lib/leftovers/processors/each_keyword_argument.rb +29 -0
- data/lib/leftovers/processors/each_positional_argument.rb +27 -0
- data/lib/leftovers/processors/each_positional_argument_from.rb +30 -0
- data/lib/leftovers/processors/eval.rb +16 -0
- data/lib/leftovers/processors/itself.rb +21 -0
- data/lib/leftovers/processors/keyword_argument.rb +30 -0
- data/lib/leftovers/processors/match_current_node.rb +26 -0
- data/lib/leftovers/processors/match_matched_node.rb +26 -0
- data/lib/leftovers/{value_processors → processors}/parameterize.rb +7 -3
- data/lib/leftovers/{value_processors → processors}/placeholder.rb +5 -4
- data/lib/leftovers/{value_processors → processors}/pluralize.rb +7 -3
- data/lib/leftovers/{value_processors → processors}/positional_argument.rb +8 -6
- data/lib/leftovers/processors/receiver.rb +24 -0
- data/lib/leftovers/{value_processors → processors}/replace_value.rb +7 -3
- data/lib/leftovers/processors/set_default_privacy.rb +21 -0
- data/lib/leftovers/processors/set_privacy.rb +23 -0
- data/lib/leftovers/{value_processors → processors}/singularize.rb +7 -3
- data/lib/leftovers/{value_processors → processors}/split.rb +8 -4
- data/lib/leftovers/{value_processors → processors}/swapcase.rb +7 -3
- data/lib/leftovers/{value_processors → processors}/titleize.rb +7 -3
- data/lib/leftovers/{value_processors → processors}/underscore.rb +7 -3
- data/lib/leftovers/{value_processors → processors}/upcase.rb +7 -3
- data/lib/leftovers/processors.rb +49 -0
- data/lib/leftovers/version.rb +1 -1
- data/lib/leftovers.rb +3 -12
- metadata +97 -52
- data/lib/leftovers/dynamic_processors/call.rb +0 -22
- data/lib/leftovers/dynamic_processors/call_definition.rb +0 -34
- data/lib/leftovers/dynamic_processors/definition.rb +0 -27
- data/lib/leftovers/dynamic_processors/each.rb +0 -19
- data/lib/leftovers/dynamic_processors/null.rb +0 -9
- data/lib/leftovers/dynamic_processors/set_default_privacy.rb +0 -18
- data/lib/leftovers/dynamic_processors/set_privacy.rb +0 -23
- data/lib/leftovers/dynamic_processors.rb +0 -13
- data/lib/leftovers/matcher_builders/node_pair_name.rb +0 -18
- data/lib/leftovers/matchers/predicate.rb +0 -19
- data/lib/leftovers/processor_builders/each_action.rb +0 -51
- data/lib/leftovers/processor_builders/each_dynamic.rb +0 -50
- data/lib/leftovers/processor_builders/each_for_definition_set.rb +0 -40
- data/lib/leftovers/value_processors/add_dynamic_prefix.rb +0 -24
- data/lib/leftovers/value_processors/add_dynamic_suffix.rb +0 -24
- data/lib/leftovers/value_processors/delete_before.rb +0 -22
- data/lib/leftovers/value_processors/each.rb +0 -21
- data/lib/leftovers/value_processors/each_for_definition_set.rb +0 -23
- data/lib/leftovers/value_processors/each_keyword.rb +0 -27
- data/lib/leftovers/value_processors/each_keyword_argument.rb +0 -27
- data/lib/leftovers/value_processors/each_positional_argument.rb +0 -25
- data/lib/leftovers/value_processors/itself.rb +0 -17
- data/lib/leftovers/value_processors/keyword.rb +0 -28
- data/lib/leftovers/value_processors/keyword_argument.rb +0 -28
- data/lib/leftovers/value_processors/return_definition_node.rb +0 -14
- data/lib/leftovers/value_processors/return_sym.rb +0 -14
- data/lib/leftovers/value_processors.rb +0 -40
data/lib/config/ruby.yml
CHANGED
@@ -1,71 +1,253 @@
|
|
1
1
|
---
|
2
2
|
include_paths:
|
3
3
|
- '#!:ruby'
|
4
|
+
- '*.rb'
|
5
|
+
|
6
|
+
# Gem
|
4
7
|
- '*.gemspec'
|
8
|
+
|
9
|
+
# IRB
|
5
10
|
- .irbrc
|
6
11
|
- irb.rc
|
7
12
|
- _irbrc
|
8
13
|
- $irbrc
|
14
|
+
|
15
|
+
# Bundler
|
9
16
|
- Gemfile
|
17
|
+
|
18
|
+
# ERB
|
10
19
|
- '*.erb'
|
11
|
-
- '*.
|
20
|
+
- '*.rhtml'
|
12
21
|
|
13
22
|
test_paths:
|
14
23
|
- /tests/
|
15
24
|
- /test/
|
16
25
|
|
17
26
|
precompile:
|
18
|
-
|
19
|
-
- { paths: ['*.
|
20
|
-
- { paths: '*.json', format: 'json' }
|
27
|
+
# ERB
|
28
|
+
- { paths: ['*.erb', '*.rhtml'], format: 'erb' }
|
21
29
|
|
22
30
|
keep:
|
23
|
-
-
|
24
|
-
- inspect # called by repl, to_s
|
25
|
-
|
26
|
-
-
|
31
|
+
# https://ruby-doc.org/core/Kernel.html#method-i-p
|
32
|
+
- inspect # called by repl, p, default to_s
|
33
|
+
|
34
|
+
# https://ruby-doc.org/core/Numeric.html#method-i-coerce
|
27
35
|
- coerce # called by Numeric
|
28
|
-
|
36
|
+
|
37
|
+
# https://ruby-doc.org/core/Kernel.html#method-i-Array
|
29
38
|
- to_ary # called by Array(), []+
|
30
39
|
- to_a # called by Array(), *splat
|
40
|
+
|
41
|
+
# https://ruby-doc.org/core/Kernel.html#method-i-String
|
42
|
+
- to_s # called by String(), "#{}"
|
31
43
|
- to_str # called by String(), ""+
|
32
|
-
|
33
|
-
-
|
34
|
-
-
|
35
|
-
|
36
|
-
-
|
37
|
-
|
38
|
-
-
|
39
|
-
-
|
40
|
-
|
41
|
-
- _load # called by Marshal.load
|
42
|
-
- inherited # called by Subclass < Klass or Class.new(Klass)
|
43
|
-
- extended # called by extend Module
|
44
|
-
- included # called by include Module
|
45
|
-
- $VERBOSE # called by whatever is outputting warnings i guess
|
44
|
+
|
45
|
+
# https://ruby-doc.org/core/Kernel.html#method-i-Hash
|
46
|
+
- to_hash # called by Hash(), **splat
|
47
|
+
|
48
|
+
- to_proc # called by &
|
49
|
+
|
50
|
+
- <=> # called by all of the Comparable methods
|
51
|
+
- each # called by all of the Enumerable methods
|
52
|
+
|
46
53
|
- === # called by when
|
47
|
-
- == # called by Array value, Hash value equality,
|
54
|
+
- == # called by Array value, Hash value equality,
|
48
55
|
- hash # called by Hash key equality
|
49
|
-
- eql? # called by Hash key equality
|
56
|
+
- eql? # called by Hash key equality, uniq
|
57
|
+
|
58
|
+
# https://ruby-doc.org/core/BasicObject.html#method-i-singleton_method_added
|
59
|
+
- singleton_method_added
|
60
|
+
# https://ruby-doc.org/core/BasicObject.html#method-i-method_missing
|
61
|
+
- method_missing
|
62
|
+
|
63
|
+
# https://ruby-doc.org/core/Class.html#method-i-inherited
|
64
|
+
# called by Subclass < Klass or Class.new(Klass)
|
65
|
+
- inherited
|
66
|
+
|
67
|
+
# https://ruby-doc.org/core/Module.html#method-i-const_missing
|
68
|
+
- const_missing
|
69
|
+
|
70
|
+
# https://ruby-doc.org/core/Module.html#method-i-method_added
|
71
|
+
- method_added
|
72
|
+
|
73
|
+
# https://ruby-doc.com/stdlib/libdoc/delegate/rdoc/Delegator.html
|
74
|
+
- __getobj__
|
75
|
+
- __setobj__
|
76
|
+
|
77
|
+
### GLOBAL VARIABLES
|
78
|
+
|
79
|
+
# https://ruby-doc.org/core/doc/globals_rdoc.html
|
80
|
+
# https://ruby-doc.com/stdlib/libdoc/English/rdoc/English.html
|
81
|
+
- $stdin
|
82
|
+
- $stderr
|
83
|
+
- $stdout
|
84
|
+
- $> # $stdout
|
85
|
+
- $DEFAULT_OUTPUT # English alias $>
|
86
|
+
- $VERBOSE # enable warnings
|
87
|
+
- $-v # alias $VERBOSE
|
88
|
+
- $-w # alias $VERBOSE
|
89
|
+
- $DEBUG # enable debug
|
90
|
+
- $-d # alias $DEBUG
|
91
|
+
- $, # Array.join/Kernel.print default field separator
|
92
|
+
- $OFS # English alias $,
|
93
|
+
- $OUTPUT_FIELD_SEPARATOR # English alias $,
|
94
|
+
- $; # String.split default separator
|
95
|
+
- $-F # alias $;
|
96
|
+
- $FS # English alias $;
|
97
|
+
- $FIELD_SEPARATOR # English alias $;
|
98
|
+
- $/ # input record separator
|
99
|
+
- $-0 # alias $/
|
100
|
+
- $RS # English alias $/
|
101
|
+
- $INPUT_RECORD_SEPARATOR # English alias $/
|
102
|
+
- $\ # Kernel.print/IO.write default output record separator
|
103
|
+
- $ORS # English alias $\
|
104
|
+
- $OUTPUT_RECORD_SEPARATOR # English alias $\
|
105
|
+
|
106
|
+
## some technically editable default global variables that shouldn't be written
|
107
|
+
# - $. # last line number read
|
108
|
+
# - $INPUT_LINE_NUMBER # English alias $.
|
109
|
+
# - $_ # last string read by gets or readline
|
110
|
+
# - $LAST_READ_LINE # English alias $_
|
111
|
+
# - $-i # in place edit mode extension i don't know what this means
|
112
|
+
# - $~ # last match
|
113
|
+
# - $LAST_MATCH_INFO # English alias $~
|
114
|
+
# - $PROGRAM_NAME
|
115
|
+
# - $0 # alias $PROGRAM_NAME
|
116
|
+
|
50
117
|
dynamic:
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
- instance_method
|
118
|
+
# BasicObject
|
119
|
+
#
|
120
|
+
# https://ruby-doc.org/core/BasicObject.html
|
121
|
+
|
122
|
+
# https://ruby-doc.org/core/BasicObject.html#__send__
|
123
|
+
- name: __send__
|
58
124
|
calls: 0
|
59
|
-
|
125
|
+
|
126
|
+
# https://ruby-doc.org/core/BasicObject.html#method-i-singleton_method_removed
|
127
|
+
- name: remove_method
|
128
|
+
calls:
|
129
|
+
value: singleton_method_removed
|
130
|
+
|
131
|
+
# https://ruby-doc.org/core/BasicObject.html#method-i-singleton_method_undefined
|
132
|
+
- name: undef_method
|
133
|
+
calls:
|
134
|
+
value: singleton_method_undefined
|
135
|
+
|
136
|
+
# https://ruby-doc.org/core/BasicObject.html#method-i-instance_eval
|
137
|
+
- name: instance_eval
|
138
|
+
eval: 0
|
139
|
+
|
140
|
+
# Kernel
|
141
|
+
#
|
142
|
+
# https://ruby-doc.org/core/Kernel.html
|
143
|
+
|
144
|
+
# https://ruby-doc.org/core/Kernel.html#method-i-Float
|
145
|
+
- name: Float
|
146
|
+
calls:
|
147
|
+
value: to_f
|
148
|
+
|
149
|
+
# https://ruby-doc.org/core/Kernel.html#method-i-Integer
|
150
|
+
- name: Integer
|
151
|
+
calls:
|
152
|
+
values: [to_int, to_i]
|
153
|
+
|
154
|
+
# https://ruby-doc.org/core/Kernel.html#method-i-eval
|
155
|
+
- name: eval
|
156
|
+
calls: 0
|
157
|
+
|
158
|
+
|
159
|
+
# Object
|
160
|
+
#
|
161
|
+
# https://ruby-doc.org/core/Object.html
|
162
|
+
|
163
|
+
# https://ruby-doc.org/core/Object.html#method-i-define_singleton_method
|
164
|
+
- name: define_singleton_method
|
165
|
+
defines: 0
|
166
|
+
|
167
|
+
# https://ruby-doc.org/core/Object.html#method-i-dup
|
168
|
+
- name: dup
|
169
|
+
calls:
|
170
|
+
value: initialize_copy
|
171
|
+
|
172
|
+
# https://ruby-doc.org/core/Object.html#method-i-enum_for
|
173
|
+
# https://ruby-doc.org/core/Object.html#method-i-to_enum
|
174
|
+
- name: [enum_for, to_enum]
|
175
|
+
calls: 0
|
176
|
+
|
177
|
+
# https://ruby-doc.org/core/Object.html#method-i-extend
|
178
|
+
- name: extend
|
179
|
+
calls:
|
180
|
+
value: extended
|
181
|
+
|
182
|
+
# https://ruby-doc.org/core/Object.html#method-i-instance_variable_get
|
183
|
+
- name: instance_variable_get
|
184
|
+
calls: 0
|
185
|
+
|
186
|
+
# https://ruby-doc.org/core/Object.html#method-i-instance_variable_set
|
187
|
+
- name: instance_variable_set
|
188
|
+
defines: 0
|
189
|
+
|
190
|
+
# https://ruby-doc.org/core/Object.html#method-i-method
|
191
|
+
- name: method
|
192
|
+
calls: 0
|
193
|
+
|
194
|
+
# https://ruby-doc.org/core/Object.html#method-i-public_method
|
195
|
+
- name: public_method
|
196
|
+
calls: 0
|
197
|
+
|
198
|
+
# https://ruby-doc.org/core/Object.html#method-i-public_send
|
199
|
+
- name: public_send
|
200
|
+
calls: 0
|
201
|
+
|
202
|
+
# https://ruby-doc.org/core/Object.html#method-i-remove_instance_variable
|
203
|
+
- name: remove_instance_variable
|
204
|
+
calls: 0
|
205
|
+
|
206
|
+
# https://ruby-doc.org/core/Object.html#method-i-respond_to-3F
|
207
|
+
- name: respond_to?
|
208
|
+
calls:
|
209
|
+
value: respond_to_missing?
|
210
|
+
|
211
|
+
# https://ruby-doc.org/core/Object.html#method-i-send
|
212
|
+
- name: send
|
213
|
+
calls: 0
|
214
|
+
|
215
|
+
# https://ruby-doc.org/core/Object.html#method-i-singleton_method
|
216
|
+
- name: singleton_method
|
217
|
+
calls: 0
|
218
|
+
|
219
|
+
# Module
|
220
|
+
#
|
221
|
+
# https://ruby-doc.org/core/Module.html
|
222
|
+
|
223
|
+
# https://ruby-doc.org/core/Module.html#method-i-alias_method
|
224
|
+
# Makes new_name a new copy of the method old_name.
|
225
|
+
- name: alias_method
|
226
|
+
defines: 0
|
227
|
+
calls: 1
|
228
|
+
|
229
|
+
# https://ruby-doc.org/core/Module.html#method-i-attr
|
230
|
+
# attr(name, ...) is equivalent to attr_reader.
|
231
|
+
# attr(name, true) is equivalent to attr_accessor(name) but deprecated.
|
232
|
+
# attr(name, false) is equivalent to attr_reader(name) but deprecated.
|
233
|
+
- name: attr
|
60
234
|
defines:
|
61
235
|
argument: '*'
|
62
236
|
calls:
|
63
237
|
argument: '*'
|
64
238
|
add_prefix: '@'
|
65
|
-
|
239
|
+
|
240
|
+
- name: attr
|
66
241
|
defines:
|
67
|
-
argument: '
|
68
|
-
|
242
|
+
- argument: '0'
|
243
|
+
add_suffix: '='
|
244
|
+
has_argument:
|
245
|
+
at: 1
|
246
|
+
has_value: true
|
247
|
+
unless:
|
248
|
+
has_argument: 2
|
249
|
+
|
250
|
+
# https://ruby-doc.org/core/Module.html#method-i-attr_accessor
|
69
251
|
- name: attr_accessor
|
70
252
|
defines:
|
71
253
|
- argument: '*'
|
@@ -74,68 +256,121 @@ dynamic:
|
|
74
256
|
calls:
|
75
257
|
argument: '*'
|
76
258
|
add_prefix: '@'
|
77
|
-
|
259
|
+
|
260
|
+
# https://ruby-doc.org/core/Module.html#method-i-attr_reader
|
261
|
+
- name: attr_reader
|
262
|
+
defines:
|
263
|
+
argument: '*'
|
264
|
+
calls:
|
265
|
+
argument: '*'
|
266
|
+
add_prefix: '@'
|
267
|
+
|
268
|
+
# https://ruby-doc.org/core/Module.html#method-i-attr_reader
|
269
|
+
- name: attr_writer
|
270
|
+
defines:
|
271
|
+
argument: '*'
|
272
|
+
add_suffix: '='
|
273
|
+
|
274
|
+
# https://ruby-doc.org/core/Module.html#method-i-autoload
|
275
|
+
# autoload(module, filename)
|
276
|
+
# Registers filename to be loaded (using Kernel::require) the first time that module (which may
|
277
|
+
# be a String or a symbol) is accessed in the namespace of mod.
|
278
|
+
- name: autoload
|
78
279
|
defines: 0
|
79
|
-
|
280
|
+
|
281
|
+
# https://ruby-doc.org/core/Module.html#method-i-class_variable_get
|
282
|
+
- name: class_variable_get
|
283
|
+
calls: 0
|
284
|
+
|
285
|
+
# https://ruby-doc.org/core/Module.html#method-i-class_variable_set
|
286
|
+
- name: class_variable_set
|
80
287
|
defines: 0
|
81
|
-
|
82
|
-
-
|
83
|
-
|
84
|
-
|
288
|
+
|
289
|
+
# https://ruby-doc.org/core/Module.html#method-i-const_get
|
290
|
+
- name: const_get
|
291
|
+
calls:
|
292
|
+
argument: 0
|
293
|
+
split: '::'
|
294
|
+
|
295
|
+
# https://ruby-doc.org/core/Module.html#method-i-const_set
|
296
|
+
- name: const_set
|
85
297
|
calls: 0
|
86
|
-
|
87
|
-
|
88
|
-
|
298
|
+
|
299
|
+
# https://ruby-doc.org/core/Module.html#method-i-define_method
|
300
|
+
- name: define_method
|
89
301
|
defines: 0
|
90
302
|
|
91
|
-
# Module
|
92
|
-
-
|
93
|
-
|
94
|
-
|
95
|
-
|
303
|
+
# https://ruby-doc.org/core/Module.html#method-i-extend_object
|
304
|
+
# https://ruby-doc.org/core/Module.html#method-i-extended
|
305
|
+
- name: extend
|
306
|
+
calls:
|
307
|
+
values: [extend_object, extended]
|
96
308
|
|
97
|
-
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
argument: '*'
|
104
|
-
to: public
|
309
|
+
# https://ruby-doc.org/core/Module.html#method-i-include
|
310
|
+
# https://ruby-doc.org/core/Module.html#method-i-included
|
311
|
+
# https://ruby-doc.org/core/Module.html#method-i-append_features
|
312
|
+
- name: include
|
313
|
+
calls:
|
314
|
+
values: [append_features, included]
|
105
315
|
|
106
|
-
-
|
107
|
-
|
108
|
-
|
316
|
+
# https://ruby-doc.org/core/Module.html#method-i-instance_method
|
317
|
+
- name: instance_method
|
318
|
+
calls: 0
|
319
|
+
|
320
|
+
# https://ruby-doc.org/core/Module.html#method-i-prepend
|
321
|
+
# https://ruby-doc.org/core/Module.html#method-i-prepend_features
|
322
|
+
# https://ruby-doc.org/core/Module.html#method-i-prepended
|
323
|
+
- name: prepend
|
324
|
+
calls:
|
325
|
+
values: [prepend_features, prepended]
|
326
|
+
|
327
|
+
# https://ruby-doc.org/core/Module.html#method-i-private_class_method
|
328
|
+
# private_class_method(symbol, ...)
|
329
|
+
# private_class_method(string, ...)
|
330
|
+
# private_class_method(array)
|
331
|
+
- name: private_class_method
|
109
332
|
has_argument: 0
|
110
|
-
unless:
|
111
|
-
has_argument: 1
|
112
333
|
set_privacy:
|
113
|
-
argument:
|
334
|
+
argument: '*'
|
114
335
|
nested:
|
115
336
|
argument: '*'
|
116
|
-
to:
|
117
|
-
|
118
|
-
- name: protected
|
119
|
-
unless:
|
120
|
-
has_argument: 0
|
121
|
-
set_default_privacy: protected
|
337
|
+
to: private
|
122
338
|
|
123
|
-
-
|
339
|
+
# https://ruby-doc.org/core/Module.html#method-i-private_constant
|
340
|
+
- name: private_constant
|
124
341
|
has_argument: 0
|
125
342
|
set_privacy:
|
126
343
|
argument: '*'
|
127
|
-
to:
|
344
|
+
to: private
|
128
345
|
|
129
|
-
-
|
346
|
+
# https://ruby-doc.org/core/Module.html#method-i-public_class_method
|
347
|
+
# public_class_method(symbol, ...)
|
348
|
+
# public_class_method(string, ...)
|
349
|
+
# public_class_method(array)
|
350
|
+
- name: public_class_method
|
130
351
|
has_argument: 0
|
131
|
-
unless:
|
132
|
-
has_argument: 1
|
133
352
|
set_privacy:
|
134
|
-
argument:
|
353
|
+
argument: '*'
|
135
354
|
nested:
|
136
355
|
argument: '*'
|
137
|
-
to:
|
356
|
+
to: private
|
138
357
|
|
358
|
+
# https://ruby-doc.org/core/Module.html#method-i-public_constant
|
359
|
+
- name: public_constant
|
360
|
+
has_argument: 0
|
361
|
+
set_privacy:
|
362
|
+
argument: '*'
|
363
|
+
to: private
|
364
|
+
|
365
|
+
# https://ruby-doc.org/core/Module.html#method-i-remove_class_variable
|
366
|
+
- name: remove_class_variable
|
367
|
+
calls: 0
|
368
|
+
|
369
|
+
# https://ruby-doc.org/core/Module.html#method-i-private
|
370
|
+
# private sets the default visibility for subsequently defined methods to private
|
371
|
+
# private(method_name) sets the named methods to have private visibility
|
372
|
+
# private(method_name, method_name, ...)
|
373
|
+
# private(array)
|
139
374
|
- name: private
|
140
375
|
unless:
|
141
376
|
has_argument: 0
|
@@ -143,19 +378,139 @@ dynamic:
|
|
143
378
|
|
144
379
|
- name:
|
145
380
|
- private
|
146
|
-
- private_class_method
|
147
|
-
- private_constant
|
148
381
|
has_argument: 0
|
149
382
|
set_privacy:
|
150
383
|
argument: '*'
|
384
|
+
nested:
|
385
|
+
argument: '*'
|
151
386
|
to: private
|
152
387
|
|
153
|
-
-
|
388
|
+
# https://ruby-doc.org/core/Module.html#method-i-protected
|
389
|
+
# protected sets the default visibility for subsequently defined methods to protected
|
390
|
+
# protected(method_name) sets the named methods to have protected visibility
|
391
|
+
# protected(method_name, method_name, ...)
|
392
|
+
# protected(array)
|
393
|
+
|
394
|
+
- name: protected
|
395
|
+
unless:
|
396
|
+
has_argument: 0
|
397
|
+
set_default_privacy: protected
|
398
|
+
|
399
|
+
- name: protected
|
154
400
|
has_argument: 0
|
401
|
+
set_privacy:
|
402
|
+
argument: '*'
|
403
|
+
nested:
|
404
|
+
argument: '*'
|
405
|
+
to: protected
|
406
|
+
|
407
|
+
# https://ruby-doc.org/core/Module.html#method-i-public
|
408
|
+
# public sets the default visibility for subsequently defined methods to public
|
409
|
+
# public(method_name) sets the named methods to have public visibility
|
410
|
+
# public(method_name, method_name, ...)
|
411
|
+
# public(array)
|
412
|
+
|
413
|
+
- name: public
|
155
414
|
unless:
|
156
|
-
has_argument:
|
415
|
+
has_argument: 0
|
416
|
+
set_default_privacy: public
|
417
|
+
|
418
|
+
- name: public
|
419
|
+
has_argument: 0
|
157
420
|
set_privacy:
|
158
|
-
argument:
|
421
|
+
argument: '*'
|
159
422
|
nested:
|
160
423
|
argument: '*'
|
161
|
-
to:
|
424
|
+
to: public
|
425
|
+
|
426
|
+
# https://ruby-doc.org/core/Module.html#method-i-remove_const
|
427
|
+
# Removes the definition of the given constant, returning that constant's previous value
|
428
|
+
- name: remove_const
|
429
|
+
calls: 0
|
430
|
+
|
431
|
+
# https://ruby-doc.org/core/Module.html#method-i-remove_method
|
432
|
+
# https://ruby-doc.org/core/Module.html#method-i-method_removed
|
433
|
+
- name: removed_method
|
434
|
+
calls:
|
435
|
+
value: method_removed
|
436
|
+
|
437
|
+
# https://ruby-doc.org/core/Module.html#method-i-undef_method
|
438
|
+
# https://ruby-doc.org/core/Module.html#method-i-method_undefined
|
439
|
+
- name: undef_method
|
440
|
+
calls:
|
441
|
+
value: method_undefined
|
442
|
+
|
443
|
+
# https://ruby-doc.org/core/Module.html#method-i-module_eval
|
444
|
+
# https://ruby-doc.org/core/Module.html#method-i-class_eval
|
445
|
+
- name: [module_eval, class_eval]
|
446
|
+
eval: 0
|
447
|
+
|
448
|
+
|
449
|
+
# Class
|
450
|
+
#
|
451
|
+
# https://ruby-doc.org/core/Class.html
|
452
|
+
|
453
|
+
# https://ruby-doc.org/core/Class.html#method-i-new
|
454
|
+
- name: new
|
455
|
+
calls:
|
456
|
+
values: [allocate, initialize]
|
457
|
+
|
458
|
+
# Enumerable
|
459
|
+
#
|
460
|
+
# https://ruby-doc.org/core/Enumerable.html
|
461
|
+
|
462
|
+
# https://ruby-doc.org/core/Enumerable.html#method-i-inject
|
463
|
+
# https://ruby-doc.org/core/Enumerable.html#method-i-reject
|
464
|
+
# inject(symbol)
|
465
|
+
# inject(initial_operand, symbol)
|
466
|
+
# inject {|memo, operand| ... }
|
467
|
+
# inject(initial_operand) {|memo, operand| ... }
|
468
|
+
- name: [inject, reduce]
|
469
|
+
calls: -1
|
470
|
+
# unless:
|
471
|
+
# has_block: true
|
472
|
+
|
473
|
+
# Marshal
|
474
|
+
#
|
475
|
+
# https://ruby-doc.org/core/Marshal.html
|
476
|
+
|
477
|
+
# https://ruby-doc.org/core/Marshal.html#method-c-dump
|
478
|
+
- names: dump
|
479
|
+
has_receiver: Marshal
|
480
|
+
calls:
|
481
|
+
values: [marshal_dump, _dump]
|
482
|
+
|
483
|
+
# https://ruby-doc.org/core/Marshal.html#method-c-load
|
484
|
+
- names: [load, restore]
|
485
|
+
has_receiver: Marshal
|
486
|
+
calls:
|
487
|
+
values: [marshal_load, _load]
|
488
|
+
|
489
|
+
# Forwardable
|
490
|
+
#
|
491
|
+
# https://ruby-doc.com/stdlib/libdoc/forwardable/rdoc/Forwardable.html
|
492
|
+
|
493
|
+
# https://ruby-doc.com/stdlib/libdoc/forwardable/rdoc/Forwardable.html#method-i-def_instance_delegator
|
494
|
+
# https://ruby-doc.com/stdlib/libdoc/forwardable/rdoc/SingleForwardable.html#method-i-def_single_delegator
|
495
|
+
- names: [def_delegator, def_instance_delegator, def_single_delegator]
|
496
|
+
defines: 2
|
497
|
+
calls:
|
498
|
+
- 1
|
499
|
+
- argument: 0
|
500
|
+
split: '::'
|
501
|
+
|
502
|
+
# https://ruby-doc.com/stdlib/libdoc/forwardable/rdoc/Forwardable.html#method-i-def_instance_delegators
|
503
|
+
# https://ruby-doc.com/stdlib/libdoc/forwardable/rdoc/SingleForwardable.html#method-i-def_single_delegators
|
504
|
+
- name: [def_delegators, def_instance_delegators, def_single_delegators]
|
505
|
+
calls:
|
506
|
+
argument: 0
|
507
|
+
split: '::'
|
508
|
+
|
509
|
+
# https://ruby-doc.com/stdlib/libdoc/forwardable/rdoc/Forwardable.html#method-i-instance_delegate
|
510
|
+
# https://ruby-doc.com/stdlib/libdoc/forwardable/rdoc/SingleForwardable.html#method-i-single_delegate
|
511
|
+
- name: [delegate, instance_delegate, single_delegate]
|
512
|
+
calls:
|
513
|
+
arguments: '**'
|
514
|
+
split: '::'
|
515
|
+
unless:
|
516
|
+
has_argument: 0
|
@@ -5,12 +5,31 @@ require 'parser'
|
|
5
5
|
module Leftovers
|
6
6
|
module AST
|
7
7
|
class Builder < ::Parser::Builders::Default
|
8
|
-
# Generates {Node} from the given information.
|
9
|
-
#
|
10
|
-
# @return [Node] the generated node
|
11
|
-
|
12
8
|
def n(type, children, source_map) # leftovers:keep
|
13
|
-
|
9
|
+
self.class.node_class(type).new(type, children, location: source_map)
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.node_class(type) # rubocop:disable Metrics
|
13
|
+
case type
|
14
|
+
when :array then ::Leftovers::AST::ArrayNode
|
15
|
+
when :block then ::Leftovers::AST::BlockNode
|
16
|
+
when :casgn then ::Leftovers::AST::CasgnNode
|
17
|
+
when :const then ::Leftovers::AST::ConstNode
|
18
|
+
when :def then ::Leftovers::AST::DefNode
|
19
|
+
when :defs then ::Leftovers::AST::DefsNode
|
20
|
+
when :false then ::Leftovers::AST::FalseNode
|
21
|
+
when :hash then ::Leftovers::AST::HashNode
|
22
|
+
when :int, :float then ::Leftovers::AST::NumericNode
|
23
|
+
when :lvar, :ivar, :gvar, :cvar then ::Leftovers::AST::VarNode
|
24
|
+
when :ivasgn, :cvasgn, :gvasgn then ::Leftovers::AST::VasgnNode
|
25
|
+
when :module, :class then ::Leftovers::AST::ModuleNode
|
26
|
+
when :nil then ::Leftovers::AST::NilNode
|
27
|
+
when :send, :csend then ::Leftovers::AST::SendNode
|
28
|
+
when :str then ::Leftovers::AST::StrNode
|
29
|
+
when :sym then ::Leftovers::AST::SymNode
|
30
|
+
when :true then ::Leftovers::AST::TrueNode
|
31
|
+
else ::Leftovers::AST::Node
|
32
|
+
end
|
14
33
|
end
|
15
34
|
|
16
35
|
# Don't complain about invalid strings
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Leftovers
|
4
|
+
module AST
|
5
|
+
class CasgnNode < ::Leftovers::AST::Node
|
6
|
+
include Leftovers::AST::HasArguments
|
7
|
+
|
8
|
+
alias_method :name, :second
|
9
|
+
alias_method :to_sym, :second
|
10
|
+
|
11
|
+
def to_s
|
12
|
+
name.to_s
|
13
|
+
end
|
14
|
+
|
15
|
+
def arguments
|
16
|
+
children[2].as_arguments_list
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|