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,19 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Leftovers
4
- module ValueProcessors
4
+ module Processors
5
5
  class Swapcase
6
+ include ComparableInstance
7
+
6
8
  def initialize(then_processor)
7
9
  @then_processor = then_processor
8
10
 
9
11
  freeze
10
12
  end
11
13
 
12
- def process(str, node, method_node)
14
+ def process(str, current_node, matched_node, acc)
13
15
  return unless str
14
16
 
15
- @then_processor.process(str.swapcase, node, method_node)
17
+ @then_processor.process(str.swapcase, current_node, matched_node, acc)
16
18
  end
19
+
20
+ freeze
17
21
  end
18
22
  end
19
23
  end
@@ -1,24 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Leftovers
4
- module ValueProcessors
4
+ module Processors
5
5
  class Titleize
6
+ include ComparableInstance
7
+
6
8
  def initialize(then_processor)
7
9
  @then_processor = then_processor
8
10
 
9
11
  freeze
10
12
  end
11
13
 
12
- def process(str, node, method_node)
14
+ def process(str, current_node, matched_node, acc)
13
15
  return unless str
14
16
 
15
- @then_processor.process(str.titleize, node, method_node)
17
+ @then_processor.process(str.titleize, current_node, matched_node, acc)
16
18
  rescue NoMethodError
17
19
  Leftovers.error <<~MESSAGE
18
20
  Tried using the String#titleize method, but the activesupport gem was not available and/or not required
19
21
  `gem install activesupport`, and/or add `requires: ['active_support', 'active_support/core_ext/string']` to your .leftovers.yml
20
22
  MESSAGE
21
23
  end
24
+
25
+ freeze
22
26
  end
23
27
  end
24
28
  end
@@ -1,24 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Leftovers
4
- module ValueProcessors
4
+ module Processors
5
5
  class Underscore
6
+ include ComparableInstance
7
+
6
8
  def initialize(then_processor)
7
9
  @then_processor = then_processor
8
10
 
9
11
  freeze
10
12
  end
11
13
 
12
- def process(str, node, method_node)
14
+ def process(str, current_node, matched_node, acc)
13
15
  return unless str
14
16
 
15
- @then_processor.process(str.underscore, node, method_node)
17
+ @then_processor.process(str.underscore, current_node, matched_node, acc)
16
18
  rescue NoMethodError
17
19
  Leftovers.error <<~MESSAGE
18
20
  Tried using the String#underscore method, but the activesupport gem was not available and/or not required
19
21
  `gem install activesupport`, and/or add `requires: ['active_support', 'active_support/core_ext/string']` to your .leftovers.yml
20
22
  MESSAGE
21
23
  end
24
+
25
+ freeze
22
26
  end
23
27
  end
24
28
  end
@@ -1,19 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Leftovers
4
- module ValueProcessors
4
+ module Processors
5
5
  class Upcase
6
+ include ComparableInstance
7
+
6
8
  def initialize(then_processor)
7
9
  @then_processor = then_processor
8
10
 
9
11
  freeze
10
12
  end
11
13
 
12
- def process(str, node, method_node)
14
+ def process(str, current_node, matched_node, acc)
13
15
  return unless str
14
16
 
15
- @then_processor.process(str.upcase, node, method_node)
17
+ @then_processor.process(str.upcase, current_node, matched_node, acc)
16
18
  end
19
+
20
+ freeze
17
21
  end
18
22
  end
19
23
  end
@@ -0,0 +1,49 @@
1
+ # frozen-string-literal: true
2
+
3
+ module Leftovers
4
+ module Processors
5
+ autoload(:AddCall, "#{__dir__}/processors/add_call")
6
+ autoload(:AddDefinitionNode, "#{__dir__}/processors/add_definition_node")
7
+ autoload(:AddDynamicPrefix, "#{__dir__}/processors/add_dynamic_prefix")
8
+ autoload(:AddDynamicSuffix, "#{__dir__}/processors/add_dynamic_suffix")
9
+ autoload(:AddPrefix, "#{__dir__}/processors/add_prefix")
10
+ autoload(:AddSuffix, "#{__dir__}/processors/add_suffix")
11
+ autoload(:AppendSym, "#{__dir__}/processors/append_sym")
12
+ autoload(:Camelize, "#{__dir__}/processors/camelize")
13
+ autoload(:Capitalize, "#{__dir__}/processors/capitalize")
14
+ autoload(:Deconstantize, "#{__dir__}/processors/deconstantize")
15
+ autoload(:DeleteAfter, "#{__dir__}/processors/delete_after")
16
+ autoload(:DeleteAfterLast, "#{__dir__}/processors/delete_after_last")
17
+ autoload(:DeleteBefore, "#{__dir__}/processors/delete_before")
18
+ autoload(:DeleteBeforeLast, "#{__dir__}/processors/delete_before_last")
19
+ autoload(:DeletePrefix, "#{__dir__}/processors/delete_prefix")
20
+ autoload(:DeleteSuffix, "#{__dir__}/processors/delete_suffix")
21
+ autoload(:Demodulize, "#{__dir__}/processors/demodulize")
22
+ autoload(:Downcase, "#{__dir__}/processors/downcase")
23
+ autoload(:Each, "#{__dir__}/processors/each")
24
+ autoload(:EachForDefinitionSet, "#{__dir__}/processors/each_for_definition_set")
25
+ autoload(:EachKeyword, "#{__dir__}/processors/each_keyword")
26
+ autoload(:EachKeywordArgument, "#{__dir__}/processors/each_keyword_argument")
27
+ autoload(:EachPositionalArgument, "#{__dir__}/processors/each_positional_argument")
28
+ autoload(:EachPositionalArgumentFrom, "#{__dir__}/processors/each_positional_argument_from")
29
+ autoload(:Eval, "#{__dir__}/processors/eval")
30
+ autoload(:Itself, "#{__dir__}/processors/itself")
31
+ autoload(:KeywordArgument, "#{__dir__}/processors/keyword_argument")
32
+ autoload(:MatchCurrentNode, "#{__dir__}/processors/match_current_node")
33
+ autoload(:MatchMatchedNode, "#{__dir__}/processors/match_matched_node")
34
+ autoload(:Parameterize, "#{__dir__}/processors/parameterize")
35
+ autoload(:Placeholder, "#{__dir__}/processors/placeholder")
36
+ autoload(:Pluralize, "#{__dir__}/processors/pluralize")
37
+ autoload(:PositionalArgument, "#{__dir__}/processors/positional_argument")
38
+ autoload(:Receiver, "#{__dir__}/processors/receiver")
39
+ autoload(:ReplaceValue, "#{__dir__}/processors/replace_value")
40
+ autoload(:SetDefaultPrivacy, "#{__dir__}/processors/set_default_privacy")
41
+ autoload(:SetPrivacy, "#{__dir__}/processors/set_privacy")
42
+ autoload(:Singularize, "#{__dir__}/processors/singularize")
43
+ autoload(:Split, "#{__dir__}/processors/split")
44
+ autoload(:Swapcase, "#{__dir__}/processors/swapcase")
45
+ autoload(:Titleize, "#{__dir__}/processors/titleize")
46
+ autoload(:Underscore, "#{__dir__}/processors/underscore")
47
+ autoload(:Upcase, "#{__dir__}/processors/upcase")
48
+ end
49
+ end
@@ -8,7 +8,7 @@ module Leftovers
8
8
  class RakeTask
9
9
  include ::Rake::DSL
10
10
 
11
- def self.generate_task(name = :leftovers, *default_argv) # rubocop:disable
11
+ def self.generate_task(name = :leftovers, *default_argv)
12
12
  new(name, default_argv)
13
13
 
14
14
  name
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Leftovers
4
- VERSION = '0.6.0'
4
+ VERSION = '0.9.0'
5
5
  end
data/lib/leftovers.rb CHANGED
@@ -1,36 +1,69 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'parser'
4
+ require 'parser/current' # to get the error message early and once.
5
+
3
6
  module Leftovers # rubocop:disable Metrics/ModuleLength
4
7
  class Error < ::StandardError; end
8
+ class UnexpectedCase < Error; end
9
+
10
+ class PrecompileError < Error
11
+ attr_reader :line, :column
12
+
13
+ def initialize(message, line: nil, column: nil)
14
+ @line = line
15
+ @column = column
16
+ super(message)
17
+ end
18
+
19
+ def warn(path:)
20
+ line_column = ":#{line}#{":#{column}" if column}" if line
21
+ klass = cause ? cause.class : self.class
22
+
23
+ Leftovers.warn "#{klass}: #{path}#{line_column} #{message}"
24
+ end
25
+ end
5
26
 
6
27
  autoload(:AST, "#{__dir__}/leftovers/ast")
7
28
  autoload(:CLI, "#{__dir__}/leftovers/cli")
8
29
  autoload(:Collector, "#{__dir__}/leftovers/collector")
9
- autoload(:ConfigValidator, "#{__dir__}/leftovers/config_validator")
30
+ autoload(:ComparableInstance, "#{__dir__}/leftovers/comparable_instance")
31
+ autoload(:ConfigLoader, "#{__dir__}/leftovers/config_loader")
10
32
  autoload(:Config, "#{__dir__}/leftovers/config")
33
+ autoload(:Definition, "#{__dir__}/leftovers/definition")
34
+ autoload(:DefinitionCollection, "#{__dir__}/leftovers/definition_collection")
11
35
  autoload(:DefinitionNode, "#{__dir__}/leftovers/definition_node")
36
+ autoload(:DefinitionNodeSet, "#{__dir__}/leftovers/definition_node_set")
12
37
  autoload(:DefinitionSet, "#{__dir__}/leftovers/definition_set")
13
- autoload(:Definition, "#{__dir__}/leftovers/definition")
14
- autoload(:ERB, "#{__dir__}/leftovers/erb")
38
+ autoload(:DefinitionToAdd, "#{__dir__}/leftovers/definition_to_add")
15
39
  autoload(:FileCollector, "#{__dir__}/leftovers/file_collector")
16
40
  autoload(:FileList, "#{__dir__}/leftovers/file_list")
17
41
  autoload(:File, "#{__dir__}/leftovers/file")
18
- autoload(:Haml, "#{__dir__}/leftovers/haml")
19
- autoload(:YAML, "#{__dir__}/leftovers/yaml")
20
- autoload(:JSON, "#{__dir__}/leftovers/json")
21
42
  autoload(:MatcherBuilders, "#{__dir__}/leftovers/matcher_builders")
22
43
  autoload(:Matchers, "#{__dir__}/leftovers/matchers")
23
44
  autoload(:MergedConfig, "#{__dir__}/leftovers/merged_config")
24
45
  autoload(:Parser, "#{__dir__}/leftovers/parser")
46
+ autoload(:Precompilers, "#{__dir__}/leftovers/precompilers")
25
47
  autoload(:ProcessorBuilders, "#{__dir__}/leftovers/processor_builders")
26
48
  autoload(:RakeTask, "#{__dir__}/leftovers/rake_task")
27
49
  autoload(:Reporter, "#{__dir__}/leftovers/reporter")
28
- autoload(:Slim, "#{__dir__}/leftovers/slim")
29
50
  autoload(:TodoReporter, "#{__dir__}/leftovers/todo_reporter")
30
- autoload(:DynamicProcessors, "#{__dir__}/leftovers/dynamic_processors")
31
- autoload(:ValueProcessors, "#{__dir__}/leftovers/value_processors")
51
+ autoload(:Processors, "#{__dir__}/leftovers/processors")
32
52
  autoload(:VERSION, "#{__dir__}/leftovers/version")
33
53
 
54
+ MEMOIZED_IVARS = %i{
55
+ @config
56
+ @collector
57
+ @reporter
58
+ @leftovers
59
+ @try_require_cache
60
+ @stdout
61
+ @stderr
62
+ @parallel
63
+ @pwd
64
+ @progress
65
+ }.freeze
66
+
34
67
  class << self
35
68
  attr_accessor :parallel, :progress
36
69
  attr_writer :reporter
@@ -82,16 +115,10 @@ module Leftovers # rubocop:disable Metrics/ModuleLength
82
115
  reporter.report(only_test: only_test, none: none)
83
116
  end
84
117
 
85
- def reset # rubocop:disable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity
86
- remove_instance_variable(:@config) if defined?(@config)
87
- remove_instance_variable(:@collector) if defined?(@collector)
88
- remove_instance_variable(:@reporter) if defined?(@reporter)
89
- remove_instance_variable(:@leftovers) if defined?(@leftovers)
90
- remove_instance_variable(:@try_require_cache) if defined?(@try_require_cache)
91
- remove_instance_variable(:@stdout) if defined?(@stdout)
92
- remove_instance_variable(:@stderr) if defined?(@stderr)
93
- remove_instance_variable(:@parallel) if defined?(@parallel)
94
- remove_instance_variable(:@pwd) if defined?(@pwd)
118
+ def reset
119
+ MEMOIZED_IVARS.each do |ivar|
120
+ remove_instance_variable(ivar) if instance_variable_get(ivar)
121
+ end
95
122
  end
96
123
 
97
124
  def resolution_instructions_link
@@ -103,7 +130,7 @@ module Leftovers # rubocop:disable Metrics/ModuleLength
103
130
  end
104
131
 
105
132
  def error(message)
106
- warn(message)
133
+ warn("\e[31m#{message}\e[0m")
107
134
  exit 1
108
135
  end
109
136
 
@@ -142,6 +169,14 @@ module Leftovers # rubocop:disable Metrics/ModuleLength
142
169
  end
143
170
  end
144
171
 
172
+ def unwrap_array(array)
173
+ if array.length <= 1
174
+ array.first
175
+ else
176
+ array
177
+ end
178
+ end
179
+
145
180
  private
146
181
 
147
182
  def try_require_cache(requirable)
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.6.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-11 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
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: did_you_mean
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: haml
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +178,20 @@ dependencies:
164
178
  - - ">="
165
179
  - !ruby/object:Gem::Version
166
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'
167
195
  - !ruby/object:Gem::Dependency
168
196
  name: simplecov
169
197
  requirement: !ruby/object:Gem::Requirement
@@ -254,28 +282,14 @@ dependencies:
254
282
  requirements:
255
283
  - - ">="
256
284
  - !ruby/object:Gem::Version
257
- version: 0.15.1
285
+ version: 0.17.0
258
286
  type: :runtime
259
287
  prerelease: false
260
288
  version_requirements: !ruby/object:Gem::Requirement
261
289
  requirements:
262
290
  - - ">="
263
291
  - !ruby/object:Gem::Version
264
- version: 0.15.1
265
- - !ruby/object:Gem::Dependency
266
- name: json_schemer
267
- requirement: !ruby/object:Gem::Requirement
268
- requirements:
269
- - - ">="
270
- - !ruby/object:Gem::Version
271
- version: '0'
272
- type: :runtime
273
- prerelease: false
274
- version_requirements: !ruby/object:Gem::Requirement
275
- requirements:
276
- - - ">="
277
- - !ruby/object:Gem::Version
278
- version: '0'
292
+ version: 0.17.0
279
293
  - !ruby/object:Gem::Dependency
280
294
  name: parallel
281
295
  requirement: !ruby/object:Gem::Requirement
@@ -317,16 +331,20 @@ files:
317
331
  - LICENSE.txt
318
332
  - README.md
319
333
  - docs/Configuration.md
334
+ - docs/Custom-Precompilers.md
320
335
  - exe/leftovers
321
336
  - leftovers.gemspec
322
337
  - lib/.DS_Store
323
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,11 +356,13 @@ 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
344
363
  - lib/config/rack.yml
345
364
  - lib/config/rails.yml
365
+ - lib/config/railties.yml
346
366
  - lib/config/rake.yml
347
367
  - lib/config/redcarpet.yml
348
368
  - lib/config/rollbar.yml
@@ -352,32 +372,83 @@ files:
352
372
  - lib/config/sidekiq.yml
353
373
  - lib/config/simplecov.yml
354
374
  - lib/config/slim.yml
375
+ - lib/config/test-unit.yml
355
376
  - lib/config/will_paginate.yml
356
377
  - lib/leftovers.rb
357
378
  - lib/leftovers/ast.rb
379
+ - lib/leftovers/ast/array_node.rb
380
+ - lib/leftovers/ast/block_node.rb
358
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
359
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
360
399
  - lib/leftovers/cli.rb
361
400
  - lib/leftovers/collector.rb
401
+ - lib/leftovers/comparable_instance.rb
362
402
  - lib/leftovers/config.rb
363
- - lib/leftovers/config_validator.rb
364
- - lib/leftovers/config_validator/error_processor.rb
365
- - lib/leftovers/config_validator/schema_hash.rb
403
+ - lib/leftovers/config_loader.rb
404
+ - lib/leftovers/config_loader/argument_position_schema.rb
405
+ - lib/leftovers/config_loader/argumentless_transform_schema.rb
406
+ - lib/leftovers/config_loader/array_schema.rb
407
+ - lib/leftovers/config_loader/attribute.rb
408
+ - lib/leftovers/config_loader/built_in_precompiler_schema.rb
409
+ - lib/leftovers/config_loader/document_schema.rb
410
+ - lib/leftovers/config_loader/dynamic_schema.rb
411
+ - lib/leftovers/config_loader/has_argument_schema.rb
412
+ - lib/leftovers/config_loader/has_value_schema.rb
413
+ - lib/leftovers/config_loader/inherit_schema_attributes.rb
414
+ - lib/leftovers/config_loader/keep_test_only_schema.rb
415
+ - lib/leftovers/config_loader/keyword_argument_schema.rb
416
+ - lib/leftovers/config_loader/node.rb
417
+ - lib/leftovers/config_loader/object_schema.rb
418
+ - lib/leftovers/config_loader/precompile_schema.rb
419
+ - lib/leftovers/config_loader/precompiler_schema.rb
420
+ - lib/leftovers/config_loader/privacy_processor_schema.rb
421
+ - lib/leftovers/config_loader/privacy_schema.rb
422
+ - lib/leftovers/config_loader/regexp_schema.rb
423
+ - lib/leftovers/config_loader/require_schema.rb
424
+ - lib/leftovers/config_loader/rule_pattern_schema.rb
425
+ - lib/leftovers/config_loader/scalar_argument_schema.rb
426
+ - lib/leftovers/config_loader/scalar_value_schema.rb
427
+ - lib/leftovers/config_loader/schema.rb
428
+ - lib/leftovers/config_loader/string_enum_schema.rb
429
+ - lib/leftovers/config_loader/string_pattern_schema.rb
430
+ - lib/leftovers/config_loader/string_schema.rb
431
+ - lib/leftovers/config_loader/string_value_processor_schema.rb
432
+ - lib/leftovers/config_loader/suggester.rb
433
+ - lib/leftovers/config_loader/transform_schema.rb
434
+ - lib/leftovers/config_loader/true_schema.rb
435
+ - lib/leftovers/config_loader/value_matcher_condition_schema.rb
436
+ - lib/leftovers/config_loader/value_matcher_schema.rb
437
+ - lib/leftovers/config_loader/value_or_array_schema.rb
438
+ - lib/leftovers/config_loader/value_or_object_schema.rb
439
+ - lib/leftovers/config_loader/value_processor_schema.rb
440
+ - lib/leftovers/config_loader/value_type_schema.rb
366
441
  - lib/leftovers/definition.rb
442
+ - lib/leftovers/definition_collection.rb
367
443
  - lib/leftovers/definition_node.rb
444
+ - lib/leftovers/definition_node_set.rb
368
445
  - lib/leftovers/definition_set.rb
369
- - lib/leftovers/dynamic_processors.rb
370
- - lib/leftovers/dynamic_processors/call.rb
371
- - lib/leftovers/dynamic_processors/call_definition.rb
372
- - lib/leftovers/dynamic_processors/definition.rb
373
- - lib/leftovers/dynamic_processors/each.rb
374
- - lib/leftovers/dynamic_processors/null.rb
375
- - lib/leftovers/erb.rb
446
+ - lib/leftovers/definition_to_add.rb
376
447
  - lib/leftovers/file.rb
377
448
  - lib/leftovers/file_collector.rb
449
+ - lib/leftovers/file_collector/comments_processor.rb
450
+ - lib/leftovers/file_collector/node_processor.rb
378
451
  - lib/leftovers/file_list.rb
379
- - lib/leftovers/haml.rb
380
- - lib/leftovers/json.rb
381
452
  - lib/leftovers/matcher_builders.rb
382
453
  - lib/leftovers/matcher_builders/and.rb
383
454
  - lib/leftovers/matcher_builders/and_not.rb
@@ -389,9 +460,10 @@ files:
389
460
  - lib/leftovers/matcher_builders/node_has_positional_argument.rb
390
461
  - lib/leftovers/matcher_builders/node_has_receiver.rb
391
462
  - lib/leftovers/matcher_builders/node_name.rb
392
- - lib/leftovers/matcher_builders/node_pair_name.rb
463
+ - lib/leftovers/matcher_builders/node_pair_key.rb
393
464
  - lib/leftovers/matcher_builders/node_pair_value.rb
394
465
  - lib/leftovers/matcher_builders/node_path.rb
466
+ - lib/leftovers/matcher_builders/node_privacy.rb
395
467
  - lib/leftovers/matcher_builders/node_type.rb
396
468
  - lib/leftovers/matcher_builders/node_value.rb
397
469
  - lib/leftovers/matcher_builders/or.rb
@@ -408,16 +480,26 @@ files:
408
480
  - lib/leftovers/matchers/node_has_positional_argument.rb
409
481
  - lib/leftovers/matchers/node_has_positional_argument_with_value.rb
410
482
  - lib/leftovers/matchers/node_has_receiver.rb
483
+ - lib/leftovers/matchers/node_is_proc.rb
411
484
  - lib/leftovers/matchers/node_name.rb
485
+ - lib/leftovers/matchers/node_pair_key.rb
412
486
  - lib/leftovers/matchers/node_pair_value.rb
413
487
  - lib/leftovers/matchers/node_path.rb
488
+ - lib/leftovers/matchers/node_privacy.rb
414
489
  - lib/leftovers/matchers/node_scalar_value.rb
415
490
  - lib/leftovers/matchers/node_type.rb
416
491
  - lib/leftovers/matchers/not.rb
417
492
  - lib/leftovers/matchers/or.rb
418
- - lib/leftovers/matchers/predicate.rb
493
+ - lib/leftovers/matchers/path.rb
419
494
  - lib/leftovers/merged_config.rb
420
495
  - lib/leftovers/parser.rb
496
+ - lib/leftovers/precompilers.rb
497
+ - lib/leftovers/precompilers/erb.rb
498
+ - lib/leftovers/precompilers/haml.rb
499
+ - lib/leftovers/precompilers/json.rb
500
+ - lib/leftovers/precompilers/precompiler.rb
501
+ - lib/leftovers/precompilers/slim.rb
502
+ - lib/leftovers/precompilers/yaml.rb
421
503
  - lib/leftovers/processor_builders.rb
422
504
  - lib/leftovers/processor_builders/action.rb
423
505
  - lib/leftovers/processor_builders/add_prefix.rb
@@ -425,57 +507,62 @@ files:
425
507
  - lib/leftovers/processor_builders/argument.rb
426
508
  - lib/leftovers/processor_builders/dynamic.rb
427
509
  - lib/leftovers/processor_builders/each.rb
428
- - lib/leftovers/processor_builders/each_action.rb
429
- - lib/leftovers/processor_builders/each_dynamic.rb
430
- - lib/leftovers/processor_builders/each_for_definition_set.rb
431
510
  - lib/leftovers/processor_builders/itself.rb
432
511
  - lib/leftovers/processor_builders/keyword.rb
433
512
  - lib/leftovers/processor_builders/keyword_argument.rb
513
+ - lib/leftovers/processor_builders/receiver.rb
434
514
  - lib/leftovers/processor_builders/transform.rb
435
515
  - lib/leftovers/processor_builders/transform_chain.rb
436
516
  - lib/leftovers/processor_builders/transform_set.rb
437
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
438
562
  - lib/leftovers/rake_task.rb
439
563
  - lib/leftovers/reporter.rb
440
- - lib/leftovers/slim.rb
441
564
  - lib/leftovers/todo_reporter.rb
442
- - lib/leftovers/value_processors.rb
443
- - lib/leftovers/value_processors/add_dynamic_prefix.rb
444
- - lib/leftovers/value_processors/add_dynamic_suffix.rb
445
- - lib/leftovers/value_processors/add_prefix.rb
446
- - lib/leftovers/value_processors/add_suffix.rb
447
- - lib/leftovers/value_processors/camelize.rb
448
- - lib/leftovers/value_processors/capitalize.rb
449
- - lib/leftovers/value_processors/deconstantize.rb
450
- - lib/leftovers/value_processors/delete_after.rb
451
- - lib/leftovers/value_processors/delete_before.rb
452
- - lib/leftovers/value_processors/delete_prefix.rb
453
- - lib/leftovers/value_processors/delete_suffix.rb
454
- - lib/leftovers/value_processors/demodulize.rb
455
- - lib/leftovers/value_processors/downcase.rb
456
- - lib/leftovers/value_processors/each.rb
457
- - lib/leftovers/value_processors/each_for_definition_set.rb
458
- - lib/leftovers/value_processors/each_keyword.rb
459
- - lib/leftovers/value_processors/each_keyword_argument.rb
460
- - lib/leftovers/value_processors/each_positional_argument.rb
461
- - lib/leftovers/value_processors/itself.rb
462
- - lib/leftovers/value_processors/keyword.rb
463
- - lib/leftovers/value_processors/keyword_argument.rb
464
- - lib/leftovers/value_processors/parameterize.rb
465
- - lib/leftovers/value_processors/placeholder.rb
466
- - lib/leftovers/value_processors/pluralize.rb
467
- - lib/leftovers/value_processors/positional_argument.rb
468
- - lib/leftovers/value_processors/replace_value.rb
469
- - lib/leftovers/value_processors/return_definition.rb
470
- - lib/leftovers/value_processors/return_string.rb
471
- - lib/leftovers/value_processors/singularize.rb
472
- - lib/leftovers/value_processors/split.rb
473
- - lib/leftovers/value_processors/swapcase.rb
474
- - lib/leftovers/value_processors/titleize.rb
475
- - lib/leftovers/value_processors/underscore.rb
476
- - lib/leftovers/value_processors/upcase.rb
477
565
  - lib/leftovers/version.rb
478
- - lib/leftovers/yaml.rb
479
566
  homepage: http://github.com/robotdana/leftovers
480
567
  licenses:
481
568
  - MIT