leftovers 0.8.0 → 0.9.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 (191) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -0
  3. data/README.md +7 -7
  4. data/docs/Configuration.md +141 -32
  5. data/docs/Custom-Precompilers.md +6 -0
  6. data/leftovers.gemspec +2 -1
  7. data/lib/config/actioncable.yml +36 -0
  8. data/lib/config/actionmailbox.yml +28 -0
  9. data/lib/config/actionmailer.yml +87 -11
  10. data/lib/config/actionpack.yml +130 -34
  11. data/lib/config/actiontext.yml +56 -0
  12. data/lib/config/actionview.yml +194 -44
  13. data/lib/config/activejob.yml +15 -8
  14. data/lib/config/activemodel.yml +175 -18
  15. data/lib/config/activerecord.yml +397 -86
  16. data/lib/config/activestorage.yml +26 -0
  17. data/lib/config/activesupport.yml +167 -24
  18. data/lib/config/leftovers.yml +48 -0
  19. data/lib/config/rails.yml +7 -3
  20. data/lib/config/railties.yml +7 -0
  21. data/lib/config/ruby.yml +438 -83
  22. data/lib/config/test-unit.yml +8 -0
  23. data/lib/leftovers/ast/array_node.rb +12 -0
  24. data/lib/leftovers/ast/block_node.rb +12 -0
  25. data/lib/leftovers/ast/builder.rb +24 -5
  26. data/lib/leftovers/ast/casgn_node.rb +20 -0
  27. data/lib/leftovers/ast/const_node.rb +15 -0
  28. data/lib/leftovers/ast/def_node.rb +15 -0
  29. data/lib/leftovers/ast/defs_node.rb +15 -0
  30. data/lib/leftovers/ast/false_node.rb +24 -0
  31. data/lib/leftovers/ast/has_arguments.rb +31 -0
  32. data/lib/leftovers/ast/hash_node.rb +17 -0
  33. data/lib/leftovers/ast/module_node.rb +16 -0
  34. data/lib/leftovers/ast/nil_node.rb +23 -0
  35. data/lib/leftovers/ast/node.rb +33 -90
  36. data/lib/leftovers/ast/numeric_node.rb +22 -0
  37. data/lib/leftovers/ast/send_node.rb +25 -0
  38. data/lib/leftovers/ast/str_node.rb +24 -0
  39. data/lib/leftovers/ast/sym_node.rb +25 -0
  40. data/lib/leftovers/ast/true_node.rb +24 -0
  41. data/lib/leftovers/ast/var_node.rb +14 -0
  42. data/lib/leftovers/ast/vasgn_node.rb +20 -0
  43. data/lib/leftovers/ast.rb +18 -0
  44. data/lib/leftovers/cli.rb +7 -1
  45. data/lib/leftovers/comparable_instance.rb +18 -0
  46. data/lib/leftovers/config_loader/argument_position_schema.rb +3 -1
  47. data/lib/leftovers/config_loader/array_schema.rb +53 -0
  48. data/lib/leftovers/config_loader/document_schema.rb +3 -2
  49. data/lib/leftovers/config_loader/dynamic_schema.rb +1 -0
  50. data/lib/leftovers/config_loader/has_value_schema.rb +4 -0
  51. data/lib/leftovers/config_loader/keyword_argument_schema.rb +13 -0
  52. data/lib/leftovers/config_loader/regexp_schema.rb +27 -0
  53. data/lib/leftovers/config_loader/rule_pattern_schema.rb +2 -0
  54. data/lib/leftovers/config_loader/scalar_value_schema.rb +8 -0
  55. data/lib/leftovers/config_loader/schema.rb +10 -0
  56. data/lib/leftovers/config_loader/string_enum_schema.rb +1 -1
  57. data/lib/leftovers/config_loader/string_pattern_schema.rb +1 -1
  58. data/lib/leftovers/config_loader/transform_schema.rb +12 -6
  59. data/lib/leftovers/config_loader/value_matcher_condition_schema.rb +13 -0
  60. data/lib/leftovers/config_loader/value_matcher_schema.rb +4 -1
  61. data/lib/leftovers/config_loader/value_or_array_schema.rb +2 -34
  62. data/lib/leftovers/config_loader/value_processor_schema.rb +2 -2
  63. data/lib/leftovers/config_loader.rb +11 -4
  64. data/lib/leftovers/definition_collection.rb +37 -0
  65. data/lib/leftovers/definition_node_set.rb +10 -2
  66. data/lib/leftovers/file.rb +1 -1
  67. data/lib/leftovers/file_collector/comments_processor.rb +1 -1
  68. data/lib/leftovers/file_collector/node_processor.rb +7 -7
  69. data/lib/leftovers/file_collector.rb +26 -32
  70. data/lib/leftovers/file_list.rb +3 -2
  71. data/lib/leftovers/matcher_builders/and.rb +26 -9
  72. data/lib/leftovers/matcher_builders/node.rb +32 -20
  73. data/lib/leftovers/matcher_builders/node_has_keyword_argument.rb +3 -1
  74. data/lib/leftovers/matcher_builders/node_pair_key.rb +16 -0
  75. data/lib/leftovers/matcher_builders/node_type.rb +9 -9
  76. data/lib/leftovers/matcher_builders/node_value.rb +23 -9
  77. data/lib/leftovers/matcher_builders/or.rb +22 -7
  78. data/lib/leftovers/matcher_builders/path.rb +3 -1
  79. data/lib/leftovers/matcher_builders.rb +1 -1
  80. data/lib/leftovers/matchers/all.rb +4 -0
  81. data/lib/leftovers/matchers/and.rb +4 -0
  82. data/lib/leftovers/matchers/any.rb +2 -0
  83. data/lib/leftovers/matchers/node_has_any_keyword_argument.rb +7 -4
  84. data/lib/leftovers/matchers/node_has_any_positional_argument_with_value.rb +5 -4
  85. data/lib/leftovers/matchers/node_has_positional_argument.rb +5 -1
  86. data/lib/leftovers/matchers/node_has_positional_argument_with_value.rb +6 -1
  87. data/lib/leftovers/matchers/node_has_receiver.rb +4 -0
  88. data/lib/leftovers/matchers/node_is_proc.rb +13 -0
  89. data/lib/leftovers/matchers/node_name.rb +9 -3
  90. data/lib/leftovers/matchers/node_pair_key.rb +23 -0
  91. data/lib/leftovers/matchers/node_pair_value.rb +7 -3
  92. data/lib/leftovers/matchers/node_path.rb +7 -3
  93. data/lib/leftovers/matchers/node_privacy.rb +7 -3
  94. data/lib/leftovers/matchers/node_scalar_value.rb +6 -1
  95. data/lib/leftovers/matchers/node_type.rb +7 -3
  96. data/lib/leftovers/matchers/not.rb +2 -0
  97. data/lib/leftovers/matchers/or.rb +2 -0
  98. data/lib/leftovers/matchers/path.rb +21 -0
  99. data/lib/leftovers/matchers.rb +3 -1
  100. data/lib/leftovers/merged_config.rb +26 -25
  101. data/lib/leftovers/parser.rb +7 -4
  102. data/lib/leftovers/precompilers.rb +5 -5
  103. data/lib/leftovers/processor_builders/action.rb +55 -37
  104. data/lib/leftovers/processor_builders/add_prefix.rb +18 -10
  105. data/lib/leftovers/processor_builders/add_suffix.rb +18 -10
  106. data/lib/leftovers/processor_builders/argument.rb +28 -11
  107. data/lib/leftovers/processor_builders/dynamic.rb +37 -31
  108. data/lib/leftovers/processor_builders/each.rb +82 -10
  109. data/lib/leftovers/processor_builders/itself.rb +2 -2
  110. data/lib/leftovers/processor_builders/keyword.rb +7 -6
  111. data/lib/leftovers/processor_builders/keyword_argument.rb +4 -2
  112. data/lib/leftovers/processor_builders/receiver.rb +13 -0
  113. data/lib/leftovers/processor_builders/transform.rb +55 -44
  114. data/lib/leftovers/processor_builders/transform_chain.rb +1 -1
  115. data/lib/leftovers/processor_builders/transform_set.rb +9 -29
  116. data/lib/leftovers/processor_builders/value.rb +4 -4
  117. data/lib/leftovers/processor_builders.rb +1 -3
  118. data/lib/leftovers/processors/add_call.rb +14 -0
  119. data/lib/leftovers/processors/add_definition_node.rb +16 -0
  120. data/lib/leftovers/processors/add_dynamic_prefix.rb +29 -0
  121. data/lib/leftovers/processors/add_dynamic_suffix.rb +29 -0
  122. data/lib/leftovers/{value_processors → processors}/add_prefix.rb +7 -3
  123. data/lib/leftovers/{value_processors → processors}/add_suffix.rb +7 -3
  124. data/lib/leftovers/processors/append_sym.rb +13 -0
  125. data/lib/leftovers/{value_processors → processors}/camelize.rb +7 -3
  126. data/lib/leftovers/{value_processors → processors}/capitalize.rb +7 -3
  127. data/lib/leftovers/{value_processors → processors}/deconstantize.rb +7 -3
  128. data/lib/leftovers/{value_processors → processors}/delete_after.rb +9 -5
  129. data/lib/leftovers/processors/delete_after_last.rb +26 -0
  130. data/lib/leftovers/processors/delete_before.rb +27 -0
  131. data/lib/leftovers/processors/delete_before_last.rb +27 -0
  132. data/lib/leftovers/{value_processors → processors}/delete_prefix.rb +7 -3
  133. data/lib/leftovers/{value_processors → processors}/delete_suffix.rb +7 -3
  134. data/lib/leftovers/{value_processors → processors}/demodulize.rb +7 -3
  135. data/lib/leftovers/{value_processors → processors}/downcase.rb +7 -3
  136. data/lib/leftovers/processors/each.rb +25 -0
  137. data/lib/leftovers/processors/each_for_definition_set.rb +33 -0
  138. data/lib/leftovers/processors/each_keyword.rb +29 -0
  139. data/lib/leftovers/processors/each_keyword_argument.rb +29 -0
  140. data/lib/leftovers/processors/each_positional_argument.rb +27 -0
  141. data/lib/leftovers/processors/each_positional_argument_from.rb +30 -0
  142. data/lib/leftovers/processors/eval.rb +16 -0
  143. data/lib/leftovers/processors/itself.rb +21 -0
  144. data/lib/leftovers/processors/keyword_argument.rb +30 -0
  145. data/lib/leftovers/processors/match_current_node.rb +26 -0
  146. data/lib/leftovers/processors/match_matched_node.rb +26 -0
  147. data/lib/leftovers/{value_processors → processors}/parameterize.rb +7 -3
  148. data/lib/leftovers/{value_processors → processors}/placeholder.rb +5 -4
  149. data/lib/leftovers/{value_processors → processors}/pluralize.rb +7 -3
  150. data/lib/leftovers/{value_processors → processors}/positional_argument.rb +8 -6
  151. data/lib/leftovers/processors/receiver.rb +24 -0
  152. data/lib/leftovers/{value_processors → processors}/replace_value.rb +7 -3
  153. data/lib/leftovers/processors/set_default_privacy.rb +21 -0
  154. data/lib/leftovers/processors/set_privacy.rb +23 -0
  155. data/lib/leftovers/{value_processors → processors}/singularize.rb +7 -3
  156. data/lib/leftovers/{value_processors → processors}/split.rb +8 -4
  157. data/lib/leftovers/{value_processors → processors}/swapcase.rb +7 -3
  158. data/lib/leftovers/{value_processors → processors}/titleize.rb +7 -3
  159. data/lib/leftovers/{value_processors → processors}/underscore.rb +7 -3
  160. data/lib/leftovers/{value_processors → processors}/upcase.rb +7 -3
  161. data/lib/leftovers/processors.rb +49 -0
  162. data/lib/leftovers/version.rb +1 -1
  163. data/lib/leftovers.rb +3 -12
  164. metadata +97 -52
  165. data/lib/leftovers/dynamic_processors/call.rb +0 -22
  166. data/lib/leftovers/dynamic_processors/call_definition.rb +0 -34
  167. data/lib/leftovers/dynamic_processors/definition.rb +0 -27
  168. data/lib/leftovers/dynamic_processors/each.rb +0 -19
  169. data/lib/leftovers/dynamic_processors/null.rb +0 -9
  170. data/lib/leftovers/dynamic_processors/set_default_privacy.rb +0 -18
  171. data/lib/leftovers/dynamic_processors/set_privacy.rb +0 -23
  172. data/lib/leftovers/dynamic_processors.rb +0 -13
  173. data/lib/leftovers/matcher_builders/node_pair_name.rb +0 -18
  174. data/lib/leftovers/matchers/predicate.rb +0 -19
  175. data/lib/leftovers/processor_builders/each_action.rb +0 -51
  176. data/lib/leftovers/processor_builders/each_dynamic.rb +0 -50
  177. data/lib/leftovers/processor_builders/each_for_definition_set.rb +0 -40
  178. data/lib/leftovers/value_processors/add_dynamic_prefix.rb +0 -24
  179. data/lib/leftovers/value_processors/add_dynamic_suffix.rb +0 -24
  180. data/lib/leftovers/value_processors/delete_before.rb +0 -22
  181. data/lib/leftovers/value_processors/each.rb +0 -21
  182. data/lib/leftovers/value_processors/each_for_definition_set.rb +0 -23
  183. data/lib/leftovers/value_processors/each_keyword.rb +0 -27
  184. data/lib/leftovers/value_processors/each_keyword_argument.rb +0 -27
  185. data/lib/leftovers/value_processors/each_positional_argument.rb +0 -25
  186. data/lib/leftovers/value_processors/itself.rb +0 -17
  187. data/lib/leftovers/value_processors/keyword.rb +0 -28
  188. data/lib/leftovers/value_processors/keyword_argument.rb +0 -28
  189. data/lib/leftovers/value_processors/return_definition_node.rb +0 -14
  190. data/lib/leftovers/value_processors/return_sym.rb +0 -14
  191. data/lib/leftovers/value_processors.rb +0 -40
data/lib/leftovers.rb CHANGED
@@ -27,9 +27,11 @@ module Leftovers # rubocop:disable Metrics/ModuleLength
27
27
  autoload(:AST, "#{__dir__}/leftovers/ast")
28
28
  autoload(:CLI, "#{__dir__}/leftovers/cli")
29
29
  autoload(:Collector, "#{__dir__}/leftovers/collector")
30
+ autoload(:ComparableInstance, "#{__dir__}/leftovers/comparable_instance")
30
31
  autoload(:ConfigLoader, "#{__dir__}/leftovers/config_loader")
31
32
  autoload(:Config, "#{__dir__}/leftovers/config")
32
33
  autoload(:Definition, "#{__dir__}/leftovers/definition")
34
+ autoload(:DefinitionCollection, "#{__dir__}/leftovers/definition_collection")
33
35
  autoload(:DefinitionNode, "#{__dir__}/leftovers/definition_node")
34
36
  autoload(:DefinitionNodeSet, "#{__dir__}/leftovers/definition_node_set")
35
37
  autoload(:DefinitionSet, "#{__dir__}/leftovers/definition_set")
@@ -46,8 +48,7 @@ module Leftovers # rubocop:disable Metrics/ModuleLength
46
48
  autoload(:RakeTask, "#{__dir__}/leftovers/rake_task")
47
49
  autoload(:Reporter, "#{__dir__}/leftovers/reporter")
48
50
  autoload(:TodoReporter, "#{__dir__}/leftovers/todo_reporter")
49
- autoload(:DynamicProcessors, "#{__dir__}/leftovers/dynamic_processors")
50
- autoload(:ValueProcessors, "#{__dir__}/leftovers/value_processors")
51
+ autoload(:Processors, "#{__dir__}/leftovers/processors")
51
52
  autoload(:VERSION, "#{__dir__}/leftovers/version")
52
53
 
53
54
  MEMOIZED_IVARS = %i{
@@ -168,16 +169,6 @@ module Leftovers # rubocop:disable Metrics/ModuleLength
168
169
  end
169
170
  end
170
171
 
171
- def map_or_self(value, &block)
172
- # return enum_for(__method__, value) unless block
173
-
174
- case value
175
- when nil then nil
176
- when Array then unwrap_array(value.flat_map(&block).compact)
177
- else yield(value)
178
- end
179
- end
180
-
181
172
  def unwrap_array(array)
182
173
  if array.length <= 1
183
174
  array.first
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leftovers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dana Sherson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-26 00:00:00.000000000 Z
11
+ date: 2022-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -178,6 +178,20 @@ dependencies:
178
178
  - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: ruby-prof
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: simplecov
183
197
  requirement: !ruby/object:Gem::Requirement
@@ -268,14 +282,14 @@ dependencies:
268
282
  requirements:
269
283
  - - ">="
270
284
  - !ruby/object:Gem::Version
271
- version: 0.15.1
285
+ version: 0.17.0
272
286
  type: :runtime
273
287
  prerelease: false
274
288
  version_requirements: !ruby/object:Gem::Requirement
275
289
  requirements:
276
290
  - - ">="
277
291
  - !ruby/object:Gem::Version
278
- version: 0.15.1
292
+ version: 0.17.0
279
293
  - !ruby/object:Gem::Dependency
280
294
  name: parallel
281
295
  requirement: !ruby/object:Gem::Requirement
@@ -321,12 +335,16 @@ files:
321
335
  - exe/leftovers
322
336
  - leftovers.gemspec
323
337
  - lib/.DS_Store
338
+ - lib/config/actioncable.yml
339
+ - lib/config/actionmailbox.yml
324
340
  - lib/config/actionmailer.yml
325
341
  - lib/config/actionpack.yml
342
+ - lib/config/actiontext.yml
326
343
  - lib/config/actionview.yml
327
344
  - lib/config/activejob.yml
328
345
  - lib/config/activemodel.yml
329
346
  - lib/config/activerecord.yml
347
+ - lib/config/activestorage.yml
330
348
  - lib/config/activesupport.yml
331
349
  - lib/config/attr_encrypted.yml
332
350
  - lib/config/audited.yml
@@ -338,6 +356,7 @@ files:
338
356
  - lib/config/guard.yml
339
357
  - lib/config/haml.yml
340
358
  - lib/config/jbuilder.yml
359
+ - lib/config/leftovers.yml
341
360
  - lib/config/okcomputer.yml
342
361
  - lib/config/parser.yml
343
362
  - lib/config/pry.yml
@@ -353,17 +372,38 @@ files:
353
372
  - lib/config/sidekiq.yml
354
373
  - lib/config/simplecov.yml
355
374
  - lib/config/slim.yml
375
+ - lib/config/test-unit.yml
356
376
  - lib/config/will_paginate.yml
357
377
  - lib/leftovers.rb
358
378
  - lib/leftovers/ast.rb
379
+ - lib/leftovers/ast/array_node.rb
380
+ - lib/leftovers/ast/block_node.rb
359
381
  - lib/leftovers/ast/builder.rb
382
+ - lib/leftovers/ast/casgn_node.rb
383
+ - lib/leftovers/ast/const_node.rb
384
+ - lib/leftovers/ast/def_node.rb
385
+ - lib/leftovers/ast/defs_node.rb
386
+ - lib/leftovers/ast/false_node.rb
387
+ - lib/leftovers/ast/has_arguments.rb
388
+ - lib/leftovers/ast/hash_node.rb
389
+ - lib/leftovers/ast/module_node.rb
390
+ - lib/leftovers/ast/nil_node.rb
360
391
  - lib/leftovers/ast/node.rb
392
+ - lib/leftovers/ast/numeric_node.rb
393
+ - lib/leftovers/ast/send_node.rb
394
+ - lib/leftovers/ast/str_node.rb
395
+ - lib/leftovers/ast/sym_node.rb
396
+ - lib/leftovers/ast/true_node.rb
397
+ - lib/leftovers/ast/var_node.rb
398
+ - lib/leftovers/ast/vasgn_node.rb
361
399
  - lib/leftovers/cli.rb
362
400
  - lib/leftovers/collector.rb
401
+ - lib/leftovers/comparable_instance.rb
363
402
  - lib/leftovers/config.rb
364
403
  - lib/leftovers/config_loader.rb
365
404
  - lib/leftovers/config_loader/argument_position_schema.rb
366
405
  - lib/leftovers/config_loader/argumentless_transform_schema.rb
406
+ - lib/leftovers/config_loader/array_schema.rb
367
407
  - lib/leftovers/config_loader/attribute.rb
368
408
  - lib/leftovers/config_loader/built_in_precompiler_schema.rb
369
409
  - lib/leftovers/config_loader/document_schema.rb
@@ -372,12 +412,14 @@ files:
372
412
  - lib/leftovers/config_loader/has_value_schema.rb
373
413
  - lib/leftovers/config_loader/inherit_schema_attributes.rb
374
414
  - lib/leftovers/config_loader/keep_test_only_schema.rb
415
+ - lib/leftovers/config_loader/keyword_argument_schema.rb
375
416
  - lib/leftovers/config_loader/node.rb
376
417
  - lib/leftovers/config_loader/object_schema.rb
377
418
  - lib/leftovers/config_loader/precompile_schema.rb
378
419
  - lib/leftovers/config_loader/precompiler_schema.rb
379
420
  - lib/leftovers/config_loader/privacy_processor_schema.rb
380
421
  - lib/leftovers/config_loader/privacy_schema.rb
422
+ - lib/leftovers/config_loader/regexp_schema.rb
381
423
  - lib/leftovers/config_loader/require_schema.rb
382
424
  - lib/leftovers/config_loader/rule_pattern_schema.rb
383
425
  - lib/leftovers/config_loader/scalar_argument_schema.rb
@@ -390,24 +432,18 @@ files:
390
432
  - lib/leftovers/config_loader/suggester.rb
391
433
  - lib/leftovers/config_loader/transform_schema.rb
392
434
  - lib/leftovers/config_loader/true_schema.rb
435
+ - lib/leftovers/config_loader/value_matcher_condition_schema.rb
393
436
  - lib/leftovers/config_loader/value_matcher_schema.rb
394
437
  - lib/leftovers/config_loader/value_or_array_schema.rb
395
438
  - lib/leftovers/config_loader/value_or_object_schema.rb
396
439
  - lib/leftovers/config_loader/value_processor_schema.rb
397
440
  - lib/leftovers/config_loader/value_type_schema.rb
398
441
  - lib/leftovers/definition.rb
442
+ - lib/leftovers/definition_collection.rb
399
443
  - lib/leftovers/definition_node.rb
400
444
  - lib/leftovers/definition_node_set.rb
401
445
  - lib/leftovers/definition_set.rb
402
446
  - lib/leftovers/definition_to_add.rb
403
- - lib/leftovers/dynamic_processors.rb
404
- - lib/leftovers/dynamic_processors/call.rb
405
- - lib/leftovers/dynamic_processors/call_definition.rb
406
- - lib/leftovers/dynamic_processors/definition.rb
407
- - lib/leftovers/dynamic_processors/each.rb
408
- - lib/leftovers/dynamic_processors/null.rb
409
- - lib/leftovers/dynamic_processors/set_default_privacy.rb
410
- - lib/leftovers/dynamic_processors/set_privacy.rb
411
447
  - lib/leftovers/file.rb
412
448
  - lib/leftovers/file_collector.rb
413
449
  - lib/leftovers/file_collector/comments_processor.rb
@@ -424,7 +460,7 @@ files:
424
460
  - lib/leftovers/matcher_builders/node_has_positional_argument.rb
425
461
  - lib/leftovers/matcher_builders/node_has_receiver.rb
426
462
  - lib/leftovers/matcher_builders/node_name.rb
427
- - lib/leftovers/matcher_builders/node_pair_name.rb
463
+ - lib/leftovers/matcher_builders/node_pair_key.rb
428
464
  - lib/leftovers/matcher_builders/node_pair_value.rb
429
465
  - lib/leftovers/matcher_builders/node_path.rb
430
466
  - lib/leftovers/matcher_builders/node_privacy.rb
@@ -444,7 +480,9 @@ files:
444
480
  - lib/leftovers/matchers/node_has_positional_argument.rb
445
481
  - lib/leftovers/matchers/node_has_positional_argument_with_value.rb
446
482
  - lib/leftovers/matchers/node_has_receiver.rb
483
+ - lib/leftovers/matchers/node_is_proc.rb
447
484
  - lib/leftovers/matchers/node_name.rb
485
+ - lib/leftovers/matchers/node_pair_key.rb
448
486
  - lib/leftovers/matchers/node_pair_value.rb
449
487
  - lib/leftovers/matchers/node_path.rb
450
488
  - lib/leftovers/matchers/node_privacy.rb
@@ -452,7 +490,7 @@ files:
452
490
  - lib/leftovers/matchers/node_type.rb
453
491
  - lib/leftovers/matchers/not.rb
454
492
  - lib/leftovers/matchers/or.rb
455
- - lib/leftovers/matchers/predicate.rb
493
+ - lib/leftovers/matchers/path.rb
456
494
  - lib/leftovers/merged_config.rb
457
495
  - lib/leftovers/parser.rb
458
496
  - lib/leftovers/precompilers.rb
@@ -469,54 +507,61 @@ files:
469
507
  - lib/leftovers/processor_builders/argument.rb
470
508
  - lib/leftovers/processor_builders/dynamic.rb
471
509
  - lib/leftovers/processor_builders/each.rb
472
- - lib/leftovers/processor_builders/each_action.rb
473
- - lib/leftovers/processor_builders/each_dynamic.rb
474
- - lib/leftovers/processor_builders/each_for_definition_set.rb
475
510
  - lib/leftovers/processor_builders/itself.rb
476
511
  - lib/leftovers/processor_builders/keyword.rb
477
512
  - lib/leftovers/processor_builders/keyword_argument.rb
513
+ - lib/leftovers/processor_builders/receiver.rb
478
514
  - lib/leftovers/processor_builders/transform.rb
479
515
  - lib/leftovers/processor_builders/transform_chain.rb
480
516
  - lib/leftovers/processor_builders/transform_set.rb
481
517
  - lib/leftovers/processor_builders/value.rb
518
+ - lib/leftovers/processors.rb
519
+ - lib/leftovers/processors/add_call.rb
520
+ - lib/leftovers/processors/add_definition_node.rb
521
+ - lib/leftovers/processors/add_dynamic_prefix.rb
522
+ - lib/leftovers/processors/add_dynamic_suffix.rb
523
+ - lib/leftovers/processors/add_prefix.rb
524
+ - lib/leftovers/processors/add_suffix.rb
525
+ - lib/leftovers/processors/append_sym.rb
526
+ - lib/leftovers/processors/camelize.rb
527
+ - lib/leftovers/processors/capitalize.rb
528
+ - lib/leftovers/processors/deconstantize.rb
529
+ - lib/leftovers/processors/delete_after.rb
530
+ - lib/leftovers/processors/delete_after_last.rb
531
+ - lib/leftovers/processors/delete_before.rb
532
+ - lib/leftovers/processors/delete_before_last.rb
533
+ - lib/leftovers/processors/delete_prefix.rb
534
+ - lib/leftovers/processors/delete_suffix.rb
535
+ - lib/leftovers/processors/demodulize.rb
536
+ - lib/leftovers/processors/downcase.rb
537
+ - lib/leftovers/processors/each.rb
538
+ - lib/leftovers/processors/each_for_definition_set.rb
539
+ - lib/leftovers/processors/each_keyword.rb
540
+ - lib/leftovers/processors/each_keyword_argument.rb
541
+ - lib/leftovers/processors/each_positional_argument.rb
542
+ - lib/leftovers/processors/each_positional_argument_from.rb
543
+ - lib/leftovers/processors/eval.rb
544
+ - lib/leftovers/processors/itself.rb
545
+ - lib/leftovers/processors/keyword_argument.rb
546
+ - lib/leftovers/processors/match_current_node.rb
547
+ - lib/leftovers/processors/match_matched_node.rb
548
+ - lib/leftovers/processors/parameterize.rb
549
+ - lib/leftovers/processors/placeholder.rb
550
+ - lib/leftovers/processors/pluralize.rb
551
+ - lib/leftovers/processors/positional_argument.rb
552
+ - lib/leftovers/processors/receiver.rb
553
+ - lib/leftovers/processors/replace_value.rb
554
+ - lib/leftovers/processors/set_default_privacy.rb
555
+ - lib/leftovers/processors/set_privacy.rb
556
+ - lib/leftovers/processors/singularize.rb
557
+ - lib/leftovers/processors/split.rb
558
+ - lib/leftovers/processors/swapcase.rb
559
+ - lib/leftovers/processors/titleize.rb
560
+ - lib/leftovers/processors/underscore.rb
561
+ - lib/leftovers/processors/upcase.rb
482
562
  - lib/leftovers/rake_task.rb
483
563
  - lib/leftovers/reporter.rb
484
564
  - lib/leftovers/todo_reporter.rb
485
- - lib/leftovers/value_processors.rb
486
- - lib/leftovers/value_processors/add_dynamic_prefix.rb
487
- - lib/leftovers/value_processors/add_dynamic_suffix.rb
488
- - lib/leftovers/value_processors/add_prefix.rb
489
- - lib/leftovers/value_processors/add_suffix.rb
490
- - lib/leftovers/value_processors/camelize.rb
491
- - lib/leftovers/value_processors/capitalize.rb
492
- - lib/leftovers/value_processors/deconstantize.rb
493
- - lib/leftovers/value_processors/delete_after.rb
494
- - lib/leftovers/value_processors/delete_before.rb
495
- - lib/leftovers/value_processors/delete_prefix.rb
496
- - lib/leftovers/value_processors/delete_suffix.rb
497
- - lib/leftovers/value_processors/demodulize.rb
498
- - lib/leftovers/value_processors/downcase.rb
499
- - lib/leftovers/value_processors/each.rb
500
- - lib/leftovers/value_processors/each_for_definition_set.rb
501
- - lib/leftovers/value_processors/each_keyword.rb
502
- - lib/leftovers/value_processors/each_keyword_argument.rb
503
- - lib/leftovers/value_processors/each_positional_argument.rb
504
- - lib/leftovers/value_processors/itself.rb
505
- - lib/leftovers/value_processors/keyword.rb
506
- - lib/leftovers/value_processors/keyword_argument.rb
507
- - lib/leftovers/value_processors/parameterize.rb
508
- - lib/leftovers/value_processors/placeholder.rb
509
- - lib/leftovers/value_processors/pluralize.rb
510
- - lib/leftovers/value_processors/positional_argument.rb
511
- - lib/leftovers/value_processors/replace_value.rb
512
- - lib/leftovers/value_processors/return_definition_node.rb
513
- - lib/leftovers/value_processors/return_sym.rb
514
- - lib/leftovers/value_processors/singularize.rb
515
- - lib/leftovers/value_processors/split.rb
516
- - lib/leftovers/value_processors/swapcase.rb
517
- - lib/leftovers/value_processors/titleize.rb
518
- - lib/leftovers/value_processors/underscore.rb
519
- - lib/leftovers/value_processors/upcase.rb
520
565
  - lib/leftovers/version.rb
521
566
  homepage: http://github.com/robotdana/leftovers
522
567
  licenses:
@@ -1,22 +0,0 @@
1
- # frozen-string-literal: true
2
-
3
- module Leftovers
4
- module DynamicProcessors
5
- class Call
6
- def initialize(matcher, processor)
7
- @matcher = matcher
8
- @processor = processor
9
- end
10
-
11
- def process(node, file)
12
- return unless @matcher === node
13
-
14
- calls = @processor.process(nil, node, node)
15
-
16
- ::Leftovers.each_or_self(calls) do |call|
17
- file.calls << call
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -1,34 +0,0 @@
1
- # frozen-string-literal: true
2
-
3
- module Leftovers
4
- module DynamicProcessors
5
- class CallDefinition
6
- def initialize(matcher, call_processor, definition_processor)
7
- @matcher = matcher
8
- @call_processor = call_processor
9
- @definition_processor = definition_processor
10
- end
11
-
12
- def process(node, file) # rubocop:disable Metrics/MethodLength
13
- return unless @matcher === node
14
-
15
- calls = @call_processor.process(nil, node, node)
16
-
17
- ::Leftovers.each_or_self(calls) do |call|
18
- file.calls << call
19
- end
20
-
21
- return if node.keep_line?
22
-
23
- definitions = @definition_processor.process(nil, node, node)
24
- ::Leftovers.each_or_self(definitions) do |definition|
25
- if definition.is_a?(DefinitionNodeSet)
26
- file.add_definition_set(definition)
27
- else
28
- file.add_definition(definition, loc: definition.loc)
29
- end
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,27 +0,0 @@
1
- # frozen-string-literal: true
2
-
3
- module Leftovers
4
- module DynamicProcessors
5
- class Definition
6
- def initialize(matcher, processor)
7
- @matcher = matcher
8
- @processor = processor
9
- end
10
-
11
- def process(node, file)
12
- return if node.keep_line?
13
- return unless @matcher === node
14
-
15
- definitions = @processor.process(nil, node, node)
16
-
17
- ::Leftovers.each_or_self(definitions) do |definition|
18
- if definition.is_a?(DefinitionNodeSet)
19
- file.add_definition_set(definition)
20
- else
21
- file.add_definition(definition, loc: definition.loc)
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,19 +0,0 @@
1
- # frozen-string-literal: true
2
-
3
- module Leftovers
4
- module DynamicProcessors
5
- class Each
6
- attr_reader :processors
7
-
8
- def initialize(processors)
9
- @processors = processors
10
- end
11
-
12
- def process(node, file)
13
- @processors.each do |processor|
14
- processor.process(node, file)
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,9 +0,0 @@
1
- # frozen-string-literal: true
2
-
3
- module Leftovers
4
- module DynamicProcessors
5
- module Null
6
- def self.process(_node, _file); end
7
- end
8
- end
9
- end
@@ -1,18 +0,0 @@
1
- # frozen-string-literal: true
2
-
3
- module Leftovers
4
- module DynamicProcessors
5
- class SetDefaultPrivacy
6
- def initialize(matcher, to)
7
- @matcher = matcher
8
- @to = to
9
- end
10
-
11
- def process(node, file)
12
- return unless @matcher === node
13
-
14
- file.default_method_privacy = @to
15
- end
16
- end
17
- end
18
- end
@@ -1,23 +0,0 @@
1
- # frozen-string-literal: true
2
-
3
- module Leftovers
4
- module DynamicProcessors
5
- class SetPrivacy
6
- def initialize(matcher, processor, to)
7
- @matcher = matcher
8
- @processor = processor
9
- @to = to
10
- end
11
-
12
- def process(node, file)
13
- return unless @matcher === node
14
-
15
- set_privacy = @processor.process(nil, node, node)
16
-
17
- ::Leftovers.each_or_self(set_privacy) do |name|
18
- file.set_privacy(name, @to)
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,13 +0,0 @@
1
- # frozen-string-literal: true
2
-
3
- module Leftovers
4
- module DynamicProcessors
5
- autoload(:CallDefinition, "#{__dir__}/dynamic_processors/call_definition")
6
- autoload(:Call, "#{__dir__}/dynamic_processors/call")
7
- autoload(:Definition, "#{__dir__}/dynamic_processors/definition")
8
- autoload(:Each, "#{__dir__}/dynamic_processors/each")
9
- autoload(:Null, "#{__dir__}/dynamic_processors/null")
10
- autoload(:SetDefaultPrivacy, "#{__dir__}/dynamic_processors/set_default_privacy")
11
- autoload(:SetPrivacy, "#{__dir__}/dynamic_processors/set_privacy")
12
- end
13
- end
@@ -1,18 +0,0 @@
1
- # frozen-string-literal: true
2
-
3
- module Leftovers
4
- module MatcherBuilders
5
- module NodePairName
6
- def self.build(name_pattern)
7
- matcher = ::Leftovers::MatcherBuilders::Name.build(name_pattern)
8
-
9
- return unless matcher
10
-
11
- ::Leftovers::MatcherBuilders::And.build([
12
- ::Leftovers::Matchers::NodeType.new(:pair),
13
- ::Leftovers::Matchers::NodeName.new(matcher)
14
- ])
15
- end
16
- end
17
- end
18
- end
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Leftovers
4
- module Matchers
5
- class Predicate
6
- def initialize(predicate)
7
- @predicate = predicate
8
-
9
- freeze
10
- end
11
-
12
- def ===(node)
13
- node.send(@predicate)
14
- end
15
-
16
- freeze
17
- end
18
- end
19
- end
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Leftovers
4
- module ProcessorBuilders
5
- module EachAction
6
- class << self
7
- def each_or_self(value, &block)
8
- case value
9
- when nil then nil
10
- when Array then build(value.map(&block))
11
- else build([yield(value)])
12
- end
13
- end
14
-
15
- def build(processors)
16
- processors = compact(processors)
17
-
18
- case processors.length
19
- # :nocov:
20
- when 0 then raise Leftovers::UnexpectedCase, "Unhandled value #{processors.inspect}"
21
- # :nocov:
22
- when 1 then processors.first
23
- else ::Leftovers::ValueProcessors::Each.new(processors)
24
- end
25
- end
26
-
27
- private
28
-
29
- def flatten(value)
30
- case value
31
- when ::Leftovers::ValueProcessors::Each
32
- value.processors.flat_map { |v| flatten(v) }
33
- when Array
34
- value.flat_map { |v| flatten(v) }
35
- else
36
- value
37
- end
38
- end
39
-
40
- def compact(processors)
41
- return processors if processors.length <= 1
42
-
43
- processors = flatten(processors)
44
- processors.compact!
45
-
46
- processors
47
- end
48
- end
49
- end
50
- end
51
- end
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Leftovers
4
- module ProcessorBuilders
5
- module EachDynamic
6
- def self.each_or_self(value, &block)
7
- case value
8
- when nil then ::Leftovers::DynamicProcessors::Null
9
- when Array then build(value.map(&block))
10
- else build([yield(value)])
11
- end
12
- end
13
-
14
- def self.build(processors)
15
- processors = compact(processors)
16
-
17
- case processors.length
18
- # :nocov:
19
- when 0 then raise Leftovers::UnexpectedCase, "Unhandled value #{processors.inspect}"
20
- # :nocov:
21
- when 1 then processors.first
22
- else ::Leftovers::DynamicProcessors::Each.new(processors)
23
- end
24
- end
25
-
26
- def self.flatten(value)
27
- case value
28
- when ::Leftovers::DynamicProcessors::Each
29
- value.processors.flat_map { |v| flatten(v) }
30
- when Array
31
- value.flat_map { |v| flatten(v) }
32
- else
33
- value
34
- end
35
- end
36
-
37
- def self.compact(processors)
38
- return processors if processors.length <= 1
39
-
40
- processors = flatten(processors)
41
-
42
- processors.reject! do |p|
43
- p == ::Leftovers::DynamicProcessors::Null
44
- end
45
-
46
- processors
47
- end
48
- end
49
- end
50
- end
@@ -1,40 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Leftovers
4
- module ProcessorBuilders
5
- module EachForDefinitionSet
6
- class << self
7
- def each_or_self(value, &block)
8
- case value
9
- # :nocov:
10
- when nil then raise Leftovers::UnexpectedCase, "Unhandled value #{value.inspect}"
11
- # :nocov:
12
- when Array then build(value.map(&block))
13
- else build([yield(value)])
14
- end
15
- end
16
-
17
- def build(processors)
18
- processors = compact(processors)
19
-
20
- case processors.length
21
- # :nocov:
22
- when 0 then raise Leftovers::UnexpectedCase, "Unhandled value #{processors.inspect}"
23
- # :nocov:
24
- when 1 then processors.first
25
- else ::Leftovers::ValueProcessors::EachForDefinitionSet.new(processors)
26
- end
27
- end
28
-
29
- private
30
-
31
- def compact(processors)
32
- processors.flatten!
33
- processors.compact!
34
-
35
- processors
36
- end
37
- end
38
- end
39
- end
40
- end