leftovers 0.6.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (235) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +51 -3
  3. data/README.md +8 -7
  4. data/docs/Configuration.md +241 -105
  5. data/docs/Custom-Precompilers.md +44 -0
  6. data/leftovers.gemspec +3 -2
  7. data/lib/config/actioncable.yml +36 -4
  8. data/lib/config/actionmailbox.yml +28 -0
  9. data/lib/config/actionmailer.yml +92 -16
  10. data/lib/config/actionpack.yml +130 -32
  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 +168 -25
  18. data/lib/config/haml.yml +4 -2
  19. data/lib/config/leftovers.yml +48 -0
  20. data/lib/config/rails.yml +8 -4
  21. data/lib/config/railties.yml +18 -0
  22. data/lib/config/ruby.yml +473 -57
  23. data/lib/config/slim.yml +4 -2
  24. data/lib/config/test-unit.yml +8 -0
  25. data/lib/leftovers/ast/array_node.rb +12 -0
  26. data/lib/leftovers/ast/block_node.rb +12 -0
  27. data/lib/leftovers/ast/builder.rb +24 -5
  28. data/lib/leftovers/ast/casgn_node.rb +20 -0
  29. data/lib/leftovers/ast/const_node.rb +15 -0
  30. data/lib/leftovers/ast/def_node.rb +15 -0
  31. data/lib/leftovers/ast/defs_node.rb +15 -0
  32. data/lib/leftovers/ast/false_node.rb +24 -0
  33. data/lib/leftovers/ast/has_arguments.rb +31 -0
  34. data/lib/leftovers/ast/hash_node.rb +17 -0
  35. data/lib/leftovers/ast/module_node.rb +16 -0
  36. data/lib/leftovers/ast/nil_node.rb +23 -0
  37. data/lib/leftovers/ast/node.rb +39 -91
  38. data/lib/leftovers/ast/numeric_node.rb +22 -0
  39. data/lib/leftovers/ast/send_node.rb +25 -0
  40. data/lib/leftovers/ast/str_node.rb +24 -0
  41. data/lib/leftovers/ast/sym_node.rb +25 -0
  42. data/lib/leftovers/ast/true_node.rb +24 -0
  43. data/lib/leftovers/ast/var_node.rb +14 -0
  44. data/lib/leftovers/ast/vasgn_node.rb +20 -0
  45. data/lib/leftovers/ast.rb +18 -0
  46. data/lib/leftovers/cli.rb +12 -1
  47. data/lib/leftovers/collector.rb +2 -1
  48. data/lib/leftovers/comparable_instance.rb +18 -0
  49. data/lib/leftovers/config.rb +3 -42
  50. data/lib/leftovers/config_loader/argument_position_schema.rb +13 -0
  51. data/lib/leftovers/config_loader/argumentless_transform_schema.rb +21 -0
  52. data/lib/leftovers/config_loader/array_schema.rb +53 -0
  53. data/lib/leftovers/config_loader/attribute.rb +56 -0
  54. data/lib/leftovers/config_loader/built_in_precompiler_schema.rb +13 -0
  55. data/lib/leftovers/config_loader/document_schema.rb +49 -0
  56. data/lib/leftovers/config_loader/dynamic_schema.rb +18 -0
  57. data/lib/leftovers/config_loader/has_argument_schema.rb +13 -0
  58. data/lib/leftovers/config_loader/has_value_schema.rb +22 -0
  59. data/lib/leftovers/config_loader/inherit_schema_attributes.rb +22 -0
  60. data/lib/leftovers/config_loader/keep_test_only_schema.rb +13 -0
  61. data/lib/leftovers/config_loader/keyword_argument_schema.rb +13 -0
  62. data/lib/leftovers/config_loader/node.rb +106 -0
  63. data/lib/leftovers/config_loader/object_schema.rb +117 -0
  64. data/lib/leftovers/config_loader/precompile_schema.rb +12 -0
  65. data/lib/leftovers/config_loader/precompiler_schema.rb +11 -0
  66. data/lib/leftovers/config_loader/privacy_processor_schema.rb +10 -0
  67. data/lib/leftovers/config_loader/privacy_schema.rb +15 -0
  68. data/lib/leftovers/config_loader/regexp_schema.rb +27 -0
  69. data/lib/leftovers/config_loader/require_schema.rb +11 -0
  70. data/lib/leftovers/config_loader/rule_pattern_schema.rb +20 -0
  71. data/lib/leftovers/config_loader/scalar_argument_schema.rb +14 -0
  72. data/lib/leftovers/config_loader/scalar_value_schema.rb +22 -0
  73. data/lib/leftovers/config_loader/schema.rb +33 -0
  74. data/lib/leftovers/config_loader/string_enum_schema.rb +62 -0
  75. data/lib/leftovers/config_loader/string_pattern_schema.rb +14 -0
  76. data/lib/leftovers/config_loader/string_schema.rb +14 -0
  77. data/lib/leftovers/config_loader/string_value_processor_schema.rb +11 -0
  78. data/lib/leftovers/config_loader/suggester.rb +22 -0
  79. data/lib/leftovers/config_loader/transform_schema.rb +32 -0
  80. data/lib/leftovers/config_loader/true_schema.rb +18 -0
  81. data/lib/leftovers/config_loader/value_matcher_condition_schema.rb +13 -0
  82. data/lib/leftovers/config_loader/value_matcher_schema.rb +21 -0
  83. data/lib/leftovers/config_loader/value_or_array_schema.rb +34 -0
  84. data/lib/leftovers/config_loader/value_or_object_schema.rb +40 -0
  85. data/lib/leftovers/config_loader/value_processor_schema.rb +14 -0
  86. data/lib/leftovers/config_loader/value_type_schema.rb +17 -0
  87. data/lib/leftovers/config_loader.rb +93 -0
  88. data/lib/leftovers/definition_collection.rb +37 -0
  89. data/lib/leftovers/definition_node.rb +6 -17
  90. data/lib/leftovers/definition_node_set.rb +19 -0
  91. data/lib/leftovers/definition_to_add.rb +31 -0
  92. data/lib/leftovers/file.rb +13 -55
  93. data/lib/leftovers/file_collector/comments_processor.rb +57 -0
  94. data/lib/leftovers/file_collector/node_processor.rb +131 -0
  95. data/lib/leftovers/file_collector.rb +62 -202
  96. data/lib/leftovers/file_list.rb +3 -2
  97. data/lib/leftovers/matcher_builders/and.rb +26 -9
  98. data/lib/leftovers/matcher_builders/and_not.rb +7 -5
  99. data/lib/leftovers/matcher_builders/name.rb +18 -17
  100. data/lib/leftovers/matcher_builders/node.rb +60 -30
  101. data/lib/leftovers/matcher_builders/node_has_argument.rb +48 -52
  102. data/lib/leftovers/matcher_builders/node_has_keyword_argument.rb +16 -11
  103. data/lib/leftovers/matcher_builders/node_has_positional_argument.rb +29 -15
  104. data/lib/leftovers/matcher_builders/node_pair_key.rb +16 -0
  105. data/lib/leftovers/matcher_builders/node_privacy.rb +13 -0
  106. data/lib/leftovers/matcher_builders/node_type.rb +11 -11
  107. data/lib/leftovers/matcher_builders/node_value.rb +44 -25
  108. data/lib/leftovers/matcher_builders/or.rb +64 -49
  109. data/lib/leftovers/matcher_builders/path.rb +3 -1
  110. data/lib/leftovers/matcher_builders/string_pattern.rb +14 -5
  111. data/lib/leftovers/matcher_builders.rb +2 -1
  112. data/lib/leftovers/matchers/all.rb +4 -0
  113. data/lib/leftovers/matchers/and.rb +4 -0
  114. data/lib/leftovers/matchers/any.rb +2 -0
  115. data/lib/leftovers/matchers/node_has_any_keyword_argument.rb +7 -4
  116. data/lib/leftovers/matchers/node_has_any_positional_argument_with_value.rb +5 -4
  117. data/lib/leftovers/matchers/node_has_positional_argument.rb +5 -1
  118. data/lib/leftovers/matchers/node_has_positional_argument_with_value.rb +6 -1
  119. data/lib/leftovers/matchers/node_has_receiver.rb +4 -0
  120. data/lib/leftovers/matchers/node_is_proc.rb +13 -0
  121. data/lib/leftovers/matchers/node_name.rb +9 -3
  122. data/lib/leftovers/matchers/node_pair_key.rb +23 -0
  123. data/lib/leftovers/matchers/node_pair_value.rb +7 -3
  124. data/lib/leftovers/matchers/node_path.rb +7 -3
  125. data/lib/leftovers/matchers/node_privacy.rb +23 -0
  126. data/lib/leftovers/matchers/node_scalar_value.rb +6 -1
  127. data/lib/leftovers/matchers/node_type.rb +7 -3
  128. data/lib/leftovers/matchers/not.rb +2 -0
  129. data/lib/leftovers/matchers/or.rb +2 -0
  130. data/lib/leftovers/matchers/path.rb +21 -0
  131. data/lib/leftovers/matchers.rb +4 -1
  132. data/lib/leftovers/merged_config.rb +40 -75
  133. data/lib/leftovers/parser.rb +7 -4
  134. data/lib/leftovers/precompilers/erb.rb +22 -0
  135. data/lib/leftovers/precompilers/haml.rb +15 -0
  136. data/lib/leftovers/precompilers/json.rb +27 -0
  137. data/lib/leftovers/precompilers/precompiler.rb +28 -0
  138. data/lib/leftovers/precompilers/slim.rb +15 -0
  139. data/lib/leftovers/precompilers/yaml.rb +75 -0
  140. data/lib/leftovers/precompilers.rb +50 -0
  141. data/lib/leftovers/processor_builders/action.rb +69 -42
  142. data/lib/leftovers/processor_builders/add_prefix.rb +18 -10
  143. data/lib/leftovers/processor_builders/add_suffix.rb +18 -10
  144. data/lib/leftovers/processor_builders/argument.rb +28 -14
  145. data/lib/leftovers/processor_builders/dynamic.rb +57 -17
  146. data/lib/leftovers/processor_builders/each.rb +83 -11
  147. data/lib/leftovers/processor_builders/itself.rb +2 -2
  148. data/lib/leftovers/processor_builders/keyword.rb +9 -9
  149. data/lib/leftovers/processor_builders/keyword_argument.rb +4 -2
  150. data/lib/leftovers/processor_builders/receiver.rb +13 -0
  151. data/lib/leftovers/processor_builders/transform.rb +55 -44
  152. data/lib/leftovers/processor_builders/transform_chain.rb +16 -8
  153. data/lib/leftovers/processor_builders/transform_set.rb +16 -32
  154. data/lib/leftovers/processor_builders/value.rb +4 -4
  155. data/lib/leftovers/processor_builders.rb +1 -3
  156. data/lib/leftovers/processors/add_call.rb +14 -0
  157. data/lib/leftovers/processors/add_definition_node.rb +16 -0
  158. data/lib/leftovers/processors/add_dynamic_prefix.rb +29 -0
  159. data/lib/leftovers/processors/add_dynamic_suffix.rb +29 -0
  160. data/lib/leftovers/{value_processors → processors}/add_prefix.rb +7 -3
  161. data/lib/leftovers/{value_processors → processors}/add_suffix.rb +7 -3
  162. data/lib/leftovers/processors/append_sym.rb +13 -0
  163. data/lib/leftovers/{value_processors → processors}/camelize.rb +7 -3
  164. data/lib/leftovers/{value_processors → processors}/capitalize.rb +7 -3
  165. data/lib/leftovers/{value_processors → processors}/deconstantize.rb +7 -3
  166. data/lib/leftovers/{value_processors → processors}/delete_after.rb +9 -5
  167. data/lib/leftovers/processors/delete_after_last.rb +26 -0
  168. data/lib/leftovers/processors/delete_before.rb +27 -0
  169. data/lib/leftovers/processors/delete_before_last.rb +27 -0
  170. data/lib/leftovers/{value_processors → processors}/delete_prefix.rb +7 -3
  171. data/lib/leftovers/{value_processors → processors}/delete_suffix.rb +7 -3
  172. data/lib/leftovers/{value_processors → processors}/demodulize.rb +7 -3
  173. data/lib/leftovers/{value_processors → processors}/downcase.rb +7 -3
  174. data/lib/leftovers/processors/each.rb +25 -0
  175. data/lib/leftovers/processors/each_for_definition_set.rb +33 -0
  176. data/lib/leftovers/processors/each_keyword.rb +29 -0
  177. data/lib/leftovers/processors/each_keyword_argument.rb +29 -0
  178. data/lib/leftovers/processors/each_positional_argument.rb +27 -0
  179. data/lib/leftovers/processors/each_positional_argument_from.rb +30 -0
  180. data/lib/leftovers/processors/eval.rb +16 -0
  181. data/lib/leftovers/processors/itself.rb +21 -0
  182. data/lib/leftovers/{value_processors → processors}/keyword_argument.rb +9 -11
  183. data/lib/leftovers/processors/match_current_node.rb +26 -0
  184. data/lib/leftovers/processors/match_matched_node.rb +26 -0
  185. data/lib/leftovers/{value_processors → processors}/parameterize.rb +7 -3
  186. data/lib/leftovers/{value_processors → processors}/placeholder.rb +5 -4
  187. data/lib/leftovers/{value_processors → processors}/pluralize.rb +7 -3
  188. data/lib/leftovers/{value_processors → processors}/positional_argument.rb +8 -6
  189. data/lib/leftovers/processors/receiver.rb +24 -0
  190. data/lib/leftovers/{value_processors → processors}/replace_value.rb +7 -3
  191. data/lib/leftovers/processors/set_default_privacy.rb +21 -0
  192. data/lib/leftovers/processors/set_privacy.rb +23 -0
  193. data/lib/leftovers/{value_processors → processors}/singularize.rb +7 -3
  194. data/lib/leftovers/{value_processors → processors}/split.rb +8 -4
  195. data/lib/leftovers/{value_processors → processors}/swapcase.rb +7 -3
  196. data/lib/leftovers/{value_processors → processors}/titleize.rb +7 -3
  197. data/lib/leftovers/{value_processors → processors}/underscore.rb +7 -3
  198. data/lib/leftovers/{value_processors → processors}/upcase.rb +7 -3
  199. data/lib/leftovers/processors.rb +49 -0
  200. data/lib/leftovers/rake_task.rb +1 -1
  201. data/lib/leftovers/version.rb +1 -1
  202. data/lib/leftovers.rb +55 -20
  203. metadata +159 -72
  204. data/lib/leftovers/config_validator/error_processor.rb +0 -196
  205. data/lib/leftovers/config_validator/schema_hash.rb +0 -551
  206. data/lib/leftovers/config_validator.rb +0 -61
  207. data/lib/leftovers/dynamic_processors/call.rb +0 -21
  208. data/lib/leftovers/dynamic_processors/call_definition.rb +0 -27
  209. data/lib/leftovers/dynamic_processors/definition.rb +0 -22
  210. data/lib/leftovers/dynamic_processors/each.rb +0 -19
  211. data/lib/leftovers/dynamic_processors/null.rb +0 -9
  212. data/lib/leftovers/dynamic_processors.rb +0 -11
  213. data/lib/leftovers/erb.rb +0 -20
  214. data/lib/leftovers/haml.rb +0 -21
  215. data/lib/leftovers/json.rb +0 -28
  216. data/lib/leftovers/matcher_builders/node_pair_name.rb +0 -18
  217. data/lib/leftovers/matchers/predicate.rb +0 -19
  218. data/lib/leftovers/processor_builders/each_action.rb +0 -51
  219. data/lib/leftovers/processor_builders/each_dynamic.rb +0 -54
  220. data/lib/leftovers/processor_builders/each_for_definition_set.rb +0 -36
  221. data/lib/leftovers/slim.rb +0 -21
  222. data/lib/leftovers/value_processors/add_dynamic_prefix.rb +0 -31
  223. data/lib/leftovers/value_processors/add_dynamic_suffix.rb +0 -31
  224. data/lib/leftovers/value_processors/delete_before.rb +0 -22
  225. data/lib/leftovers/value_processors/each.rb +0 -21
  226. data/lib/leftovers/value_processors/each_for_definition_set.rb +0 -29
  227. data/lib/leftovers/value_processors/each_keyword.rb +0 -27
  228. data/lib/leftovers/value_processors/each_keyword_argument.rb +0 -27
  229. data/lib/leftovers/value_processors/each_positional_argument.rb +0 -24
  230. data/lib/leftovers/value_processors/itself.rb +0 -17
  231. data/lib/leftovers/value_processors/keyword.rb +0 -32
  232. data/lib/leftovers/value_processors/return_definition.rb +0 -22
  233. data/lib/leftovers/value_processors/return_string.rb +0 -14
  234. data/lib/leftovers/value_processors.rb +0 -40
  235. data/lib/leftovers/yaml.rb +0 -73
@@ -1,21 +1,86 @@
1
+ # currently doesn't handle with_options at all
2
+ # probably never will
3
+
4
+
5
+
1
6
  requires:
2
7
  - 'active_support'
3
8
  - 'active_support/core_ext/string'
4
9
  - 'active_support/inflections'
5
- - './config/initializers/inflections'
10
+ - quiet: './config/initializers/inflections'
6
11
 
7
12
  # THIS IS INCOMPLETE (you can help by expanding it)
8
13
  # rails is _really complicated_ and has a lot of magic which calls methods for you.
9
14
  # some is currently impossible to handle (with_options).
10
15
  # Some is just corners of rails I haven't hit yet.
11
16
  keep:
12
- - ClassMethods # ActiveSupport::Concern
13
- - process_action # ActiveSupport::LogSubscriber
14
- - format_message # ActiveSupport::Logger
15
17
  - APP_PATH
16
18
  - APP_ROOT
17
19
 
20
+ # https://guides.rubyonrails.org/active_support_core_extensions.html#to-param
21
+ # you're expected to redefine this as it's relevant
22
+ - to_param
23
+
18
24
  dynamic:
25
+ # https://guides.rubyonrails.org/active_support_core_extensions.html#try
26
+ - name: [try, try!]
27
+ calls: 0
28
+
29
+ # https://guides.rubyonrails.org/active_support_core_extensions.html#acts-like-questionmark-duck
30
+ - name: acts_like?
31
+ calls:
32
+ argument: 0
33
+ add_prefix: acts_like_
34
+ add_suffix: "?"
35
+
36
+ # https://guides.rubyonrails.org/active_support_core_extensions.html#alias-attribute
37
+ - name: alias_attribute
38
+ calls:
39
+ argument: 1
40
+ transforms:
41
+ - original
42
+ - add_suffix: '?'
43
+ - add_prefix: '='
44
+ defines:
45
+ argument: 0
46
+ transforms:
47
+ - original
48
+ - add_suffix: '?'
49
+ - add_prefix: '='
50
+
51
+ # https://guides.rubyonrails.org/active_support_core_extensions.html#internal-attributes
52
+ - name: [attr_internal, attr_internal_accessor, attr_internal_writer]
53
+ defines:
54
+ argument: '*'
55
+ add_suffix: '='
56
+
57
+ - name: [attr_internal, attr_internal_accessor, attr_internal_reader]
58
+ defines:
59
+ argument: '*'
60
+ calls:
61
+ argument: '*'
62
+ add_prefix: '@_'
63
+ # this ivar pattern is only the default.
64
+ # if it's overridden copy this into .leftovers.yml with
65
+ # whatever it was overridden as
66
+
67
+ # https://guides.rubyonrails.org/active_support_core_extensions.html#module-attributes
68
+ # https://guides.rubyonrails.org/active_support_core_extensions.html#cattr-reader-cattr-writer-and-cattr-accessor
69
+ - name: [mattr_accessor, mattr_writer, cattr_accessor, cattr_writer]
70
+ defines:
71
+ argument: '*'
72
+ add_suffix: '='
73
+
74
+ - name: [mattr_accessor, mattr_reader, cattr_accessor, cattr_reader]
75
+ defines:
76
+ argument: '*'
77
+ calls:
78
+ argument: '*'
79
+ add_prefix: '@@'
80
+
81
+ # https://guides.rubyonrails.org/active_support_core_extensions.html#delegate
82
+ # skipping handling `private: true` because i don't yet support combining multiple has_argument with and
83
+ # also i expect to be able to run these in any order, and that would be order dependent
19
84
  - name: delegate
20
85
  has_argument:
21
86
  at: prefix
@@ -51,31 +116,101 @@ dynamic:
51
116
  type: [String, Symbol]
52
117
  calls:
53
118
  - argument: to
54
- - name:
55
- - cattr_accessor
56
- - mattr_accessor
57
- defines:
58
- - argument: '*'
59
- - argument: '*'
60
- add_suffix: '='
119
+
120
+ # https://guides.rubyonrails.org/active_support_core_extensions.html#delegate-missing-to
121
+ - name: delegate_missing_to
61
122
  calls:
62
- - argument: '*'
63
- add_prefix: '@'
64
- - name:
65
- - cattr_reader
66
- - mattr_reader
123
+ argument: 0
124
+ split: '::'
125
+
126
+ # https://guides.rubyonrails.org/active_support_core_extensions.html#redefining-methods
127
+ - name: redefine_method
128
+ define:
129
+ argument: 0
130
+
131
+ # https://guides.rubyonrails.org/active_support_core_extensions.html#class-attribute
132
+ - name: class_attribute
67
133
  defines:
68
- - argument: '*'
134
+ argument: '*'
135
+ transforms:
136
+ - original
137
+ - add_suffix: '='
138
+ - add_suffix: '?'
139
+
140
+ # https://guides.rubyonrails.org/active_support_core_extensions.html#constantize
141
+ # https://api.rubyonrails.org/classes/String.html#method-i-safe_constantize
142
+ - name: [constantize, safe_constantize]
69
143
  calls:
70
- - argument: '*'
71
- add_prefix: '@'
72
- - name:
73
- - cattr_writer
74
- - mattr_writer
144
+ receiver: true
145
+ split: '::'
146
+
147
+ # https://api.rubyonrails.org/classes/ActiveSupport/Callbacks/ClassMethods.html#method-i-set_callback
148
+ - name: set_callback
149
+ calls: [2, if, unless]
150
+
151
+ - name: set_callback
152
+ calls: 1
153
+ unless:
154
+ - has_argument: 2
155
+ # - has_block_argument: true
156
+
157
+ # https://api.rubyonrails.org/classes/ActiveSupport/Callbacks/ClassMethods.html#method-i-skip_callback
158
+ - name: skip_callback
159
+ calls: [if, unless]
160
+
161
+ # https://api.rubyonrails.org/classes/ActiveSupport/Configurable/ClassMethods.html#method-i-config_accessor
162
+ - name: config_accessor
75
163
  defines:
164
+ argument: '*'
165
+ transforms:
166
+ - original
167
+ - add_suffix: '='
168
+
169
+ # https://api.rubyonrails.org/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_changes
170
+ # https://api.rubyonrails.org/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_no_changes
171
+ - name: [assert_changes, assert_no_changes]
172
+ eval: 0
173
+ has_argument:
174
+ at: 0
175
+ has_value:
176
+ type: String
177
+
178
+ # https://api.rubyonrails.org/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_difference
179
+ - name: assert_difference
180
+ eval:
181
+ - argument: 0
182
+ - argument: 0
183
+ nested: '*'
184
+ - argument: 0
185
+ keywords: '**'
186
+
187
+ # https://api.rubyonrails.org/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_no_difference
188
+ - name: assert_difference
189
+ eval:
190
+ - argument: 0
191
+ - argument: 0
192
+ nested: '*'
193
+
194
+ # https://api.rubyonrails.org/classes/ActiveSupport/Rescuable/ClassMethods.html#method-i-rescue_from
195
+ - name: rescue_from
196
+ calls:
76
197
  - argument: '*'
77
- add_suffix: '='
198
+ split: '::'
199
+ - argument: with
200
+
201
+ # https://api.rubyonrails.org/classes/ActiveSupport/Reloader.html#method-c-after_class_unload
202
+ # https://api.rubyonrails.org/classes/ActiveSupport/Reloader.html#method-c-before_class_unload
203
+ # https://api.rubyonrails.org/classes/ActiveSupport/Reloader.html#method-c-to_prepare
204
+ # this is not well documented but uses set_callback internally so we can just guess
205
+ - name: [before_class_unload, after_class_unload, to_prepare]
206
+ calls: [0, if, unless]
78
207
 
208
+ # https://api.rubyonrails.org/classes/Module/Concerning.html#method-i-concern
209
+ - name: concern
210
+ defines: 0
211
+
212
+ # https://api.rubyonrails.org/classes/Module.html#method-i-thread_mattr_accessor
213
+ # https://api.rubyonrails.org/classes/Module.html#method-i-thread_cattr_accessor
79
214
  - name:
80
215
  - thread_cattr_accessor
81
216
  - thread_mattr_accessor
@@ -83,17 +218,25 @@ dynamic:
83
218
  - argument: '*'
84
219
  - argument: '*'
85
220
  add_suffix: '='
221
+
222
+ # https://api.rubyonrails.org/classes/Module.html#method-i-thread_mattr_reader
223
+ # https://api.rubyonrails.org/classes/Module.html#method-i-thread_cattr_reader
86
224
  - name:
87
225
  - thread_cattr_reader
88
226
  - thread_mattr_reader
89
227
  defines:
90
228
  argument: '*'
229
+
230
+ # https://api.rubyonrails.org/classes/Module.html#method-i-thread_mattr_writer
231
+ # https://api.rubyonrails.org/classes/Module.html#method-i-thread_cattr_writer
91
232
  - name:
92
233
  - thread_cattr_writer
93
234
  - thread_mattr_writer
94
235
  defines:
95
236
  argument: '*'
96
237
  add_suffix: '='
97
- - name: delegate_missing_to
238
+
239
+ # https://api.rubyonrails.org/classes/ActiveModel/Serializers/JSON.html
240
+ - name: to_json
98
241
  calls:
99
- argument: 0
242
+ value: as_json
data/lib/config/haml.yml CHANGED
@@ -1,4 +1,6 @@
1
1
  include_paths:
2
2
  - '*.haml'
3
- haml_paths:
4
- - '*.haml'
3
+ requires: 'haml'
4
+ precompile:
5
+ format: haml
6
+ paths: '*.haml'
@@ -0,0 +1,48 @@
1
+ precompile:
2
+ - { paths: ['*.yml', '*.yaml'], format: 'yaml' }
3
+ - { paths: '*.json', format: 'json' }
4
+
5
+ include_paths:
6
+ .leftovers.yml
7
+
8
+ dynamic:
9
+ - document: true
10
+ path: '.leftovers.yml'
11
+ has_argument:
12
+ at: precompile
13
+ has_value:
14
+ has_argument:
15
+ at: '*'
16
+ has_value:
17
+ has_argument:
18
+ at: 'format'
19
+ has_value:
20
+ has_argument: custom
21
+ calls:
22
+ - value: precompile
23
+ - argument: precompile
24
+ nested:
25
+ - argument: '*'
26
+ nested:
27
+ argument: format
28
+ nested:
29
+ argument: custom
30
+ split: '::'
31
+
32
+ - document: true
33
+ path: '.leftovers.yml'
34
+ has_argument:
35
+ at: precompile
36
+ has_value:
37
+ has_argument:
38
+ at: 'format'
39
+ has_value:
40
+ has_argument: custom
41
+ calls:
42
+ - value: precompile
43
+ - argument: precompile
44
+ nested:
45
+ argument: format
46
+ nested:
47
+ argument: custom
48
+ split: '::'
data/lib/config/rails.yml CHANGED
@@ -3,14 +3,18 @@
3
3
  # some is currently impossible to handle (with_options).
4
4
  # Some is just corners of rails I haven't hit yet.
5
5
  gems:
6
- - actioncable
7
- - actionmailer
6
+ - activesupport
8
7
  - actionpack
9
8
  - actionview
10
- - activejob
11
9
  - activemodel
12
10
  - activerecord
13
- - activesupport
11
+ - actionmailer
12
+ - activejob
13
+ - actioncable
14
+ - activestorage
15
+ - actionmailbox
16
+ - actiontext
17
+ - railties
14
18
 
15
19
  keep:
16
20
  - default_url_options # called by url_for, unsure what gem does
@@ -0,0 +1,18 @@
1
+ gems:
2
+ - actionpack
3
+ - activesupport
4
+
5
+ keep:
6
+ - # https://guides.rubyonrails.org/generators.html#generators-lookup
7
+ path: '**/generators/**/*_generator.rb'
8
+ # "When a generator is invoked, each public method in the generator is executed sequentially in
9
+ # the order that it is defined When a generator is invoked, each public method in the generator
10
+ # is executed sequentially in the order that it is defined"
11
+ #
12
+ # https://guides.rubyonrails.org/generators.html
13
+ privacy: public
14
+ type: Method
15
+
16
+ - path: '**/generators/**/*_generator.rb'
17
+ name: { has_suffix: Generator }
18
+