leftovers 0.2.0 → 0.4.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 (145) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +49 -0
  3. data/README.md +28 -45
  4. data/docs/Configuration.md +598 -0
  5. data/exe/leftovers +2 -2
  6. data/leftovers.gemspec +13 -7
  7. data/lib/config/attr_encrypted.yml +3 -4
  8. data/lib/config/audited.yml +9 -0
  9. data/lib/config/datagrid.yml +1 -1
  10. data/lib/config/flipper.yml +1 -3
  11. data/lib/config/graphql.yml +15 -13
  12. data/lib/config/okcomputer.yml +1 -3
  13. data/lib/config/parser.yml +89 -91
  14. data/lib/config/rails.yml +162 -92
  15. data/lib/config/redcarpet.yml +35 -38
  16. data/lib/config/rollbar.yml +1 -3
  17. data/lib/config/rspec.yml +18 -10
  18. data/lib/config/ruby.yml +42 -39
  19. data/lib/config/selenium-webdriver.yml +19 -0
  20. data/lib/config/sidekiq.yml +9 -0
  21. data/lib/config/will_paginate.yml +12 -14
  22. data/lib/leftovers.rb +60 -43
  23. data/lib/leftovers/ast.rb +8 -0
  24. data/lib/leftovers/ast/builder.rb +6 -3
  25. data/lib/leftovers/ast/node.rb +63 -104
  26. data/lib/leftovers/backports.rb +24 -40
  27. data/lib/leftovers/cli.rb +17 -14
  28. data/lib/leftovers/collector.rb +7 -11
  29. data/lib/leftovers/config.rb +34 -13
  30. data/lib/leftovers/config_validator.rb +60 -0
  31. data/lib/leftovers/config_validator/error_processor.rb +196 -0
  32. data/lib/leftovers/config_validator/schema_hash.rb +495 -0
  33. data/lib/leftovers/definition.rb +14 -39
  34. data/lib/leftovers/definition_set.rb +7 -17
  35. data/lib/leftovers/dynamic_processors.rb +11 -0
  36. data/lib/leftovers/dynamic_processors/call.rb +25 -0
  37. data/lib/leftovers/dynamic_processors/call_definition.rb +31 -0
  38. data/lib/leftovers/dynamic_processors/definition.rb +26 -0
  39. data/lib/leftovers/dynamic_processors/each.rb +19 -0
  40. data/lib/leftovers/dynamic_processors/null.rb +9 -0
  41. data/lib/leftovers/erb.rb +2 -2
  42. data/lib/leftovers/file.rb +3 -5
  43. data/lib/leftovers/file_collector.rb +72 -85
  44. data/lib/leftovers/file_list.rb +9 -12
  45. data/lib/leftovers/haml.rb +9 -12
  46. data/lib/leftovers/matcher_builders.rb +24 -0
  47. data/lib/leftovers/matcher_builders/and.rb +19 -0
  48. data/lib/leftovers/matcher_builders/and_not.rb +14 -0
  49. data/lib/leftovers/matcher_builders/argument_node_value.rb +21 -0
  50. data/lib/leftovers/matcher_builders/name.rb +29 -0
  51. data/lib/leftovers/matcher_builders/node.rb +40 -0
  52. data/lib/leftovers/matcher_builders/node_has_argument.rb +71 -0
  53. data/lib/leftovers/matcher_builders/node_has_keyword_argument.rb +22 -0
  54. data/lib/leftovers/matcher_builders/node_has_positional_argument.rb +24 -0
  55. data/lib/leftovers/matcher_builders/node_name.rb +15 -0
  56. data/lib/leftovers/matcher_builders/node_pair_name.rb +18 -0
  57. data/lib/leftovers/matcher_builders/node_pair_value.rb +16 -0
  58. data/lib/leftovers/matcher_builders/node_path.rb +14 -0
  59. data/lib/leftovers/matcher_builders/node_type.rb +28 -0
  60. data/lib/leftovers/matcher_builders/or.rb +73 -0
  61. data/lib/leftovers/matcher_builders/path.rb +15 -0
  62. data/lib/leftovers/matcher_builders/string.rb +11 -0
  63. data/lib/leftovers/matcher_builders/string_pattern.rb +19 -0
  64. data/lib/leftovers/matcher_builders/unless.rb +13 -0
  65. data/lib/leftovers/matchers.rb +26 -0
  66. data/lib/leftovers/matchers/all.rb +25 -0
  67. data/lib/leftovers/matchers/and.rb +24 -0
  68. data/lib/leftovers/matchers/any.rb +27 -0
  69. data/lib/leftovers/matchers/node_has_any_keyword_argument.rb +28 -0
  70. data/lib/leftovers/matchers/node_has_any_positional_argument_with_value.rb +25 -0
  71. data/lib/leftovers/matchers/node_has_positional_argument.rb +23 -0
  72. data/lib/leftovers/matchers/node_has_positional_argument_with_value.rb +25 -0
  73. data/lib/leftovers/matchers/node_name.rb +23 -0
  74. data/lib/leftovers/matchers/node_pair_value.rb +23 -0
  75. data/lib/leftovers/matchers/node_path.rb +23 -0
  76. data/lib/leftovers/matchers/node_scalar_value.rb +25 -0
  77. data/lib/leftovers/matchers/node_type.rb +23 -0
  78. data/lib/leftovers/matchers/not.rb +23 -0
  79. data/lib/leftovers/matchers/or.rb +26 -0
  80. data/lib/leftovers/merged_config.rb +20 -14
  81. data/lib/leftovers/parser.rb +37 -0
  82. data/lib/leftovers/processor_builders.rb +22 -0
  83. data/lib/leftovers/processor_builders/action.rb +63 -0
  84. data/lib/leftovers/processor_builders/add_prefix.rb +20 -0
  85. data/lib/leftovers/processor_builders/add_suffix.rb +20 -0
  86. data/lib/leftovers/processor_builders/argument.rb +25 -0
  87. data/lib/leftovers/processor_builders/dynamic.rb +27 -0
  88. data/lib/leftovers/processor_builders/each.rb +36 -0
  89. data/lib/leftovers/processor_builders/each_action.rb +51 -0
  90. data/lib/leftovers/processor_builders/each_dynamic.rb +54 -0
  91. data/lib/leftovers/processor_builders/each_for_definition_set.rb +36 -0
  92. data/lib/leftovers/processor_builders/itself.rb +13 -0
  93. data/lib/leftovers/processor_builders/keyword.rb +24 -0
  94. data/lib/leftovers/processor_builders/keyword_argument.rb +14 -0
  95. data/lib/leftovers/processor_builders/transform.rb +55 -0
  96. data/lib/leftovers/processor_builders/transform_chain.rb +24 -0
  97. data/lib/leftovers/processor_builders/transform_set.rb +47 -0
  98. data/lib/leftovers/processor_builders/value.rb +13 -0
  99. data/lib/leftovers/rake_task.rb +4 -4
  100. data/lib/leftovers/reporter.rb +1 -1
  101. data/lib/leftovers/value_processors.rb +40 -0
  102. data/lib/leftovers/value_processors/add_dynamic_prefix.rb +31 -0
  103. data/lib/leftovers/value_processors/add_dynamic_suffix.rb +31 -0
  104. data/lib/leftovers/value_processors/add_prefix.rb +20 -0
  105. data/lib/leftovers/value_processors/add_suffix.rb +20 -0
  106. data/lib/leftovers/value_processors/camelize.rb +24 -0
  107. data/lib/leftovers/value_processors/capitalize.rb +19 -0
  108. data/lib/leftovers/value_processors/deconstantize.rb +24 -0
  109. data/lib/leftovers/value_processors/delete_after.rb +22 -0
  110. data/lib/leftovers/value_processors/delete_before.rb +22 -0
  111. data/lib/leftovers/value_processors/delete_prefix.rb +26 -0
  112. data/lib/leftovers/value_processors/delete_suffix.rb +26 -0
  113. data/lib/leftovers/value_processors/demodulize.rb +24 -0
  114. data/lib/leftovers/value_processors/downcase.rb +19 -0
  115. data/lib/leftovers/value_processors/each.rb +21 -0
  116. data/lib/leftovers/value_processors/each_for_definition_set.rb +33 -0
  117. data/lib/leftovers/value_processors/each_keyword.rb +27 -0
  118. data/lib/leftovers/value_processors/each_keyword_argument.rb +27 -0
  119. data/lib/leftovers/value_processors/each_positional_argument.rb +24 -0
  120. data/lib/leftovers/value_processors/itself.rb +17 -0
  121. data/lib/leftovers/value_processors/keyword.rb +36 -0
  122. data/lib/leftovers/value_processors/keyword_argument.rb +36 -0
  123. data/lib/leftovers/value_processors/parameterize.rb +24 -0
  124. data/lib/leftovers/value_processors/placeholder.rb +18 -0
  125. data/lib/leftovers/value_processors/pluralize.rb +24 -0
  126. data/lib/leftovers/value_processors/positional_argument.rb +26 -0
  127. data/lib/leftovers/value_processors/replace_value.rb +18 -0
  128. data/lib/leftovers/value_processors/return_definition.rb +24 -0
  129. data/lib/leftovers/value_processors/return_string.rb +14 -0
  130. data/lib/leftovers/value_processors/singularize.rb +24 -0
  131. data/lib/leftovers/value_processors/split.rb +22 -0
  132. data/lib/leftovers/value_processors/swapcase.rb +19 -0
  133. data/lib/leftovers/value_processors/titleize.rb +24 -0
  134. data/lib/leftovers/value_processors/underscore.rb +24 -0
  135. data/lib/leftovers/value_processors/upcase.rb +19 -0
  136. data/lib/leftovers/version.rb +1 -1
  137. metadata +193 -29
  138. data/lib/config/selenium.yml +0 -21
  139. data/lib/leftovers/argument_rule.rb +0 -218
  140. data/lib/leftovers/core_ext.rb +0 -13
  141. data/lib/leftovers/hash_rule.rb +0 -40
  142. data/lib/leftovers/name_rule.rb +0 -53
  143. data/lib/leftovers/rule.rb +0 -74
  144. data/lib/leftovers/transform_rule.rb +0 -171
  145. data/lib/leftovers/value_rule.rb +0 -56
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require_relative '../lib/leftovers/cli'
4
+ require_relative '../lib/leftovers'
5
5
 
6
- Leftovers::CLI.new(argv: ARGV, stdout: $stdout, stderr: $stderr)
6
+ exit Leftovers::CLI.new(argv: ARGV).run
@@ -16,9 +16,10 @@ Gem::Specification.new do |spec|
16
16
 
17
17
  spec.metadata['homepage_uri'] = spec.homepage
18
18
  spec.metadata['source_code_uri'] = 'http://github.com/robotdana/leftovers'
19
- spec.metadata['changelog_uri'] = 'http://github.com/robotdana/leftovers/blob/master/CHANGELOG.md'
19
+ spec.metadata['changelog_uri'] = 'http://github.com/robotdana/leftovers/blob/main/CHANGELOG.md'
20
+ spec.required_ruby_version = '>= 2.4.0'
20
21
 
21
- spec.files = Dir.glob('{lib,exe}/**/{*,.*}') + %w{
22
+ spec.files = Dir.glob('{lib,exe,docs}/**/{*,.*}') + %w{
22
23
  CHANGELOG.md
23
24
  Gemfile
24
25
  LICENSE.txt
@@ -30,17 +31,22 @@ Gem::Specification.new do |spec|
30
31
  spec.require_paths = ['lib']
31
32
 
32
33
  spec.add_development_dependency 'activesupport'
34
+ spec.add_development_dependency 'benchmark-ips'
33
35
  spec.add_development_dependency 'bundler', '~> 2.0'
34
36
  spec.add_development_dependency 'haml'
35
37
  spec.add_development_dependency 'pry', '~> 0.1'
36
- spec.add_development_dependency 'rake', '~> 10.0'
38
+ spec.add_development_dependency 'rake', '>= 13'
37
39
  spec.add_development_dependency 'rspec', '~> 3.0'
38
- spec.add_development_dependency 'rubocop', '~> 0.74'
39
- spec.add_development_dependency 'rubocop-performance', '~> 1.4'
40
- spec.add_development_dependency 'rubocop-rspec', '~> 1.35'
40
+ spec.add_development_dependency 'rubocop', '~> 0.93.1'
41
+ spec.add_development_dependency 'rubocop-performance', '~> 1.8.1'
42
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.44.1'
43
+ spec.add_development_dependency 'simplecov', '>= 0.18.5'
44
+ spec.add_development_dependency 'simplecov-console'
45
+ spec.add_development_dependency 'tty_string', '>= 0.2.1'
41
46
 
42
47
  spec.add_development_dependency 'spellr', '>= 0.8.1'
43
- spec.add_dependency 'fast_ignore', '>= 0.9.0'
48
+ spec.add_dependency 'fast_ignore', '>= 0.15.1'
49
+ spec.add_dependency 'json_schemer'
44
50
  spec.add_dependency 'parallel'
45
51
  spec.add_dependency 'parser'
46
52
  end
@@ -1,10 +1,9 @@
1
- rules:
1
+ dynamic:
2
2
  # this doesn't handle custom prefix, suffix, attribute
3
3
  - name: attr_encrypted
4
- defines:
5
- - argument: 1
4
+ defines: 0
6
5
  calls:
7
- - argument: 1
6
+ - argument: 0
8
7
  transforms:
9
8
  - add_prefix: encrypted_
10
9
  - add_prefix: encrypted_
@@ -0,0 +1,9 @@
1
+ dynamic:
2
+ - name: current_user_method=
3
+ calls: 0
4
+ - name: audited
5
+ calls:
6
+ argument:
7
+ - associated_with
8
+ - if
9
+ - unless
@@ -1,4 +1,4 @@
1
- rules:
1
+ dynamic:
2
2
  - name: filter
3
3
  calls:
4
4
  arguments:
@@ -1,3 +1 @@
1
- rules:
2
- skip: true
3
- name: flipper_id
1
+ keep: flipper_id
@@ -1,20 +1,22 @@
1
- rules:
2
- - skip: true
3
- names:
4
- - cursor_from_node
5
- - paged_nodes
6
- - sliced_nodes
1
+ keep:
2
+ - cursor_from_node
3
+ - paged_nodes
4
+ - sliced_nodes
5
+ dynamic:
7
6
  - name: field
8
7
  calls:
9
- - argument: 1
10
- unless:
11
- has_argument: method
12
- - argument: method
8
+ argument: method
9
+ - name: field
10
+ unless:
11
+ has_argument: method
12
+ calls: 0
13
13
  - name: argument
14
+ unless:
15
+ has_argument: as
14
16
  calls:
15
- - argument: 1
17
+ - argument: 0
16
18
  add_suffix: '='
17
- unless:
18
- has_argument: as
19
+ - name: argument
20
+ calls:
19
21
  - argument: as
20
22
  add_suffix: '='
@@ -1,3 +1 @@
1
- rules:
2
- skip: true
3
- name: check
1
+ keep: check
@@ -1,91 +1,89 @@
1
- rules:
2
- skip: true
3
- names: |
4
- on_alias
5
- on_and
6
- on_and_asgn
7
- on_arg
8
- on_arg_expr
9
- on_args
10
- on_argument
11
- on_array
12
- on_back_ref
13
- on_begin
14
- on_block
15
- on_block_pass
16
- on_blockarg
17
- on_blockarg_expr
18
- on_break
19
- on_case
20
- on_casgn
21
- on_class
22
- on_const
23
- on_csend
24
- on_cvar
25
- on_cvasgn
26
- on_def
27
- on_defined?
28
- on_defs
29
- on_dstr
30
- on_dsym
31
- on_eflipflop
32
- on_ensure
33
- on_erange
34
- on_for
35
- on_gvar
36
- on_gvasgn
37
- on_hash
38
- on_if
39
- on_iflipflop
40
- on_irange
41
- on_ivar
42
- on_ivasgn
43
- on_kwarg
44
- on_kwbegin
45
- on_kwoptarg
46
- on_kwrestarg
47
- on_lvar
48
- on_lvasgn
49
- on_masgn
50
- on_match_current_line
51
- on_match_with_lvasgn
52
- on_mlhs
53
- on_module
54
- on_next
55
- on_not
56
- on_nth_ref
57
- on_op_asgn
58
- on_optarg
59
- on_or
60
- on_or_asgn
61
- on_pair
62
- on_postexe
63
- on_preexe
64
- on_procarg0
65
- on_redo
66
- on_regexp
67
- on_resbody
68
- on_rescue
69
- on_restarg
70
- on_restarg_expr
71
- on_retry
72
- on_return
73
- on_sclass
74
- on_send
75
- on_shadowarg
76
- on_splat
77
- on_super
78
- on_undef
79
- on_until
80
- on_until_post
81
- on_var
82
- on_vasgn
83
- on_when
84
- on_while
85
- on_while_post
86
- on_xstr
87
- on_yield
88
- process_argument_node
89
- process_regular_node
90
- process_var_asgn_node
91
- process_variable_node
1
+ keep:
2
+ - on_alias
3
+ - on_and
4
+ - on_and_asgn
5
+ - on_arg
6
+ - on_arg_expr
7
+ - on_args
8
+ - on_argument
9
+ - on_array
10
+ - on_back_ref
11
+ - on_begin
12
+ - on_block
13
+ - on_block_pass
14
+ - on_blockarg
15
+ - on_blockarg_expr
16
+ - on_break
17
+ - on_case
18
+ - on_casgn
19
+ - on_class
20
+ - on_const
21
+ - on_csend
22
+ - on_cvar
23
+ - on_cvasgn
24
+ - on_def
25
+ - on_defined?
26
+ - on_defs
27
+ - on_dstr
28
+ - on_dsym
29
+ - on_eflipflop
30
+ - on_ensure
31
+ - on_erange
32
+ - on_for
33
+ - on_gvar
34
+ - on_gvasgn
35
+ - on_hash
36
+ - on_if
37
+ - on_iflipflop
38
+ - on_irange
39
+ - on_ivar
40
+ - on_ivasgn
41
+ - on_kwarg
42
+ - on_kwbegin
43
+ - on_kwoptarg
44
+ - on_kwrestarg
45
+ - on_lvar
46
+ - on_lvasgn
47
+ - on_masgn
48
+ - on_match_current_line
49
+ - on_match_with_lvasgn
50
+ - on_mlhs
51
+ - on_module
52
+ - on_next
53
+ - on_not
54
+ - on_nth_ref
55
+ - on_op_asgn
56
+ - on_optarg
57
+ - on_or
58
+ - on_or_asgn
59
+ - on_pair
60
+ - on_postexe
61
+ - on_preexe
62
+ - on_procarg0
63
+ - on_redo
64
+ - on_regexp
65
+ - on_resbody
66
+ - on_rescue
67
+ - on_restarg
68
+ - on_restarg_expr
69
+ - on_retry
70
+ - on_return
71
+ - on_sclass
72
+ - on_send
73
+ - on_shadowarg
74
+ - on_splat
75
+ - on_super
76
+ - on_undef
77
+ - on_until
78
+ - on_until_post
79
+ - on_var
80
+ - on_vasgn
81
+ - on_when
82
+ - on_while
83
+ - on_while_post
84
+ - on_xstr
85
+ - on_yield
86
+ - process_argument_node
87
+ - process_regular_node
88
+ - process_var_asgn_node
89
+ - process_variable_node
@@ -4,24 +4,30 @@ exclude_paths:
4
4
  include_paths:
5
5
  - '*.rjs'
6
6
  - '*.rhtml'
7
+ requires:
8
+ - 'active_support/core_ext/string'
9
+ - 'active_support/inflections'
10
+ - './config/initializers/inflections'
7
11
 
8
12
  # THIS IS INCOMPLETE (you can help by expanding it)
9
13
  # rails is _really complicated_ and has a lot of magic which calls methods for you.
10
14
  # some is currently impossible to handle (with_options).
11
15
  # Some is just corners of rails I haven't hit yet.
12
- # TODO: split this up by the actual gems
13
- rules:
14
- - skip: true
15
- names:
16
- - ClassMethods # ActiveSupport::Concern
17
- - process_action # ActiveSupport::LogSubscriber
18
- - validate_each # ActiveModel::EachValidator
19
- - format_message # ActiveSupport::Logger
20
- - ssl_configured? # ApplicationController
21
- - skip: true
22
- names:
23
- has_suffix: Helper
16
+ keep:
17
+ - ClassMethods # ActiveSupport::Concern
18
+ - process_action # ActiveSupport::LogSubscriber
19
+ - validate_each # ActiveModel::EachValidator
20
+ - format_message # ActiveSupport::Logger
21
+ - ssl_configured? # ApplicationController
22
+ - default_url_options # called by url_for
23
+ - APP_PATH
24
+ - APP_ROOT
25
+ - has_suffix: Helper
24
26
  path: /app/helpers
27
+ - has_suffix: Preview
28
+ path: '**/mailers/previews/**/*_preview.rb'
29
+
30
+ dynamic:
25
31
  - names:
26
32
  - after_initialize
27
33
  - after_find
@@ -47,10 +53,10 @@ rules:
47
53
  - after_destroy_commit
48
54
  - after_save_commit
49
55
  calls:
50
- arguments:
51
- - 1
52
- - if
53
- - unless
56
+ - arguments: 0
57
+ - arguments: [if, unless]
58
+ nested:
59
+ arguments: '*'
54
60
  - name:
55
61
  - after_action
56
62
  - append_after_action
@@ -66,22 +72,24 @@ rules:
66
72
  - skip_around_action
67
73
  - validates_associated
68
74
  calls:
69
- - arguments:
70
- - '*'
71
- - if
72
- - unless
75
+ - arguments: ['*', if, unless]
73
76
  - name: validates
74
77
  calls:
75
78
  - arguments:
76
79
  - '*'
77
- - 'in'
80
+ - within
78
81
  - inclusion
79
82
  - scope
80
83
  - if
81
84
  - unless
82
- - keys: '*'
85
+ - arguments: inclusion
86
+ nested:
87
+ arguments: 'in'
88
+ - keywords:
89
+ unless: [if, unless]
83
90
  camelize: true
84
91
  add_suffix: Validator
92
+ split: '::'
85
93
  - names:
86
94
  - validate
87
95
  - validate_associated
@@ -116,8 +124,8 @@ rules:
116
124
  - url_field
117
125
  - week_field
118
126
  calls:
119
- - arguments: [1,2] # 1: with a receiver, 2: with no receiver
120
- - arguments: [1,2]
127
+ - arguments: [0,1] # 0: with a receiver, 1: with no receiver
128
+ - arguments: [0,1]
121
129
  add_suffix: '='
122
130
  - name: fields_for
123
131
  calls:
@@ -125,97 +133,146 @@ rules:
125
133
  add_suffix: _attributes
126
134
  - name: options_from_collection_for_select
127
135
  calls:
128
- - arguments: [2,3]
136
+ - arguments: [1,2]
129
137
  - name:
130
138
  - collection_select
131
139
  - collection_check_boxes
132
140
  - collection_radio_buttons
133
141
  calls:
134
- - argument: 2
142
+ - argument: 1
135
143
  add_suffix: '='
136
- - arguments: [4,5]
144
+ - arguments: [3,4]
137
145
  - name: grouped_collection_select
138
146
  calls:
139
- - argument: 2
147
+ - argument: 1
140
148
  add_suffix: '='
141
- - arguments: [4,5,6,7]
149
+ - arguments: [3,4,5,6]
142
150
  - name: option_groups_from_collection_for_select
143
151
  calls:
144
- - arguments: [1,2,3,4]
152
+ - arguments: [0,1,2,3]
145
153
  - name: scope
146
154
  path: /app/models
147
155
  defines:
148
- argument: 1 # ar
156
+ argument: 0 # ar
149
157
  - name: scope
150
158
  path: /config/routes*
151
159
  calls:
152
160
  argument: module # routes
153
161
  camelize: true
162
+ split: '::'
154
163
  - name: namespace
155
164
  calls:
156
- - argument: 1
165
+ - argument: 0
157
166
  camelize: true
167
+ split: '::'
158
168
  - name:
159
169
  - attribute
160
170
  - alias_attribute
161
171
  path: app/models/*
162
172
  defines:
163
- argument: 1
164
- linked_transforms:
173
+ argument: 0
174
+ transforms:
165
175
  - original
166
176
  - add_suffix: '?'
167
177
  - add_suffix: '='
168
178
  - name: alias_attribute
169
179
  calls:
170
- - argument: 2
171
- - argument: 2
180
+ - argument: 1
181
+ - argument: 1
172
182
  add_suffix: '?'
173
- - argument: 2
183
+ - argument: 1
174
184
  add_suffix: '='
175
185
  - name:
176
186
  - has_one
177
187
  - belongs_to
188
+ unless:
189
+ has_argument: class_name
178
190
  calls:
179
- argument: 1
191
+ argument: 0
180
192
  camelize: true
181
- unless:
182
- has_argument: class_name
193
+ split: '::'
194
+
183
195
  - name:
184
196
  - has_many
185
197
  - has_and_belongs_to_many
198
+ unless:
199
+ has_argument: class_name
186
200
  calls:
187
- argument: 1
188
- camelize: true
189
- singularize: true
190
- unless:
191
- has_argument: class_name
201
+ - argument: 0
202
+ camelize: true
203
+ singularize: true
204
+ split: '::'
205
+ - name:
206
+ - has_many
207
+ - has_and_belongs_to_many
208
+ defines:
209
+ - argument: 0
210
+ transforms:
211
+ - original
212
+ - add_suffix: '='
213
+ - singularize: true
214
+ add_suffix: _ids
215
+ - singularize: true
216
+ add_suffix: _ids=
192
217
  - name:
193
218
  - has_many
194
219
  - has_one
195
220
  - has_and_belongs_to_many
196
221
  calls:
197
- argument: as
222
+ argument:
223
+ - as
224
+ - name:
225
+ - has_one
226
+ - has_many
227
+ calls:
228
+ - argument:
229
+ - source_type
230
+ - source
231
+ - through
198
232
  - name:
199
233
  - has_one
200
- - has_many
201
234
  - belongs_to
202
- - has_and_belongs_to_many
203
235
  defines:
204
- - argument: 1
205
- linked_transforms:
236
+ - argument: 0
237
+ transforms:
206
238
  - original
207
239
  - add_suffix: '='
240
+ - add_prefix: build_
241
+ - add_prefix: create_
242
+ - add_prefix: create_
243
+ add_suffix: '!'
244
+ - add_prefix: reload
245
+ - name: belongs_to
246
+ unless:
247
+ has_argument:
248
+ at: optional
249
+ has_value: true
250
+ calls:
251
+ argument: 0
252
+
253
+ - name:
254
+ - has_one
255
+ - has_many
256
+ - belongs_to
257
+ - has_and_belongs_to_many
258
+ calls:
259
+ - argument: class_name
260
+ split: '::'
261
+ - argument: inverse_of
262
+ - argument: touch
263
+ add_suffix: '='
264
+ - name:
265
+ - has_one
266
+ - has_many
267
+ - belongs_to
268
+ - has_and_belongs_to_many
269
+ has_argument:
270
+ at: [dependent, inverse_of, touch, validate]
271
+ unless:
272
+ has_value: false
208
273
  calls:
209
- - argument:
210
- - through
211
- - class_name
212
- - inverse_of
213
- - argument: 1
214
- if:
215
- has_argument: dependent
216
- - argument: 1
217
- if:
218
- has_argument: inverse_of
274
+ argument: 0
275
+
219
276
  - name:
220
277
  - rescue_from
221
278
  calls:
@@ -227,38 +284,49 @@ rules:
227
284
  - patch
228
285
  - post
229
286
  - put
287
+ - root
230
288
  calls:
231
- - arguments: [1, action]
289
+ - arguments: [0, action]
232
290
  - argument: '**'
233
291
  delete_before: '#'
234
292
  - argument: '**'
235
293
  delete_after: '#'
236
294
  camelize: true
237
295
  add_suffix: Controller
296
+ split: '::'
238
297
  - name: delegate
298
+ has_argument:
299
+ at: prefix
300
+ has_value: true
239
301
  defines:
240
302
  - argument: '*'
241
- if:
242
- has_argument:
243
- keyword: prefix
244
- value: true
245
303
  add_prefix:
246
- from_argument: to
247
- joiner: '_'
304
+ argument: to
305
+ add_suffix: '_'
306
+ calls:
307
+ - argument: to
308
+ - argument: '*'
309
+ - name: delegate
310
+ has_argument:
311
+ at: prefix
312
+ has_value_type: [String, Symbol]
313
+ defines:
248
314
  - argument: '*'
249
- if:
250
- has_argument:
251
- keyword: prefix
252
- value:
253
- type: [String, Symbol]
254
315
  add_prefix:
255
- from_argument: prefix
256
- joiner: '_'
316
+ argument: prefix
317
+ add_suffix: '_'
257
318
  calls:
258
319
  - argument: to
259
320
  - argument: '*'
260
- if:
261
- has_argument: prefix
321
+ - name: delegate
322
+ unless:
323
+ has_argument:
324
+ - at: prefix
325
+ has_value: true
326
+ - at: prefix
327
+ has_value_type: [String, Symbol]
328
+ calls:
329
+ - argument: to
262
330
  - name:
263
331
  - resource
264
332
  - resources
@@ -267,28 +335,31 @@ rules:
267
335
  - argument: controller
268
336
  camelize: true
269
337
  add_suffix: Controller
338
+ split: '::'
270
339
  - name:
271
340
  - resources
272
341
  - controller
273
342
  - namespace
274
343
  calls:
275
- - argument: 1
344
+ - argument: 0
276
345
  camelize: true
277
346
  add_suffix: Controller
347
+ split: '::'
278
348
  - name: accepts_nested_attributes_for
279
349
  defines:
280
350
  argument: '*'
281
- linked_transforms:
351
+ transforms:
282
352
  - add_suffix: _attributes
283
353
  - add_suffix: _attributes=
284
354
  calls:
285
355
  argument: reject_if
286
356
  - name: resource
287
357
  calls:
288
- - argument: 1
358
+ - argument: 0
289
359
  camelize: true
290
360
  pluralize: true
291
361
  add_suffix: Controller
362
+ split: '::'
292
363
  - name:
293
364
  - new
294
365
  - create
@@ -297,16 +368,17 @@ rules:
297
368
  - update!
298
369
  - assign_attributes
299
370
  calls:
300
- keys: '*'
371
+ keyword: '**'
301
372
  add_suffix: '='
302
373
  - name: permit
303
374
  calls:
304
375
  arguments: ['*', '**']
305
- keys: '*'
376
+ keywords: '**'
306
377
  add_suffix: "="
378
+ recursive: true
307
379
  - name: layout
308
380
  calls:
309
- argument: 1
381
+ argument: 0
310
382
  - name:
311
383
  - includes
312
384
  - preload
@@ -316,7 +388,7 @@ rules:
316
388
  - left_outer_joins
317
389
  calls:
318
390
  arguments: ['*', '**']
319
- keys: '*'
391
+ keywords: '**'
320
392
  - name:
321
393
  - string
322
394
  - text
@@ -332,7 +404,7 @@ rules:
332
404
  - boolean
333
405
  path: /db/schema.rb
334
406
  calls:
335
- argument: 1
407
+ argument: 0
336
408
  transforms:
337
409
  - original
338
410
  - add_suffix: '='
@@ -342,9 +414,8 @@ rules:
342
414
  - mattr_accessor
343
415
  defines:
344
416
  - argument: '*'
345
- transforms:
346
- - original
347
- - add_suffix: '='
417
+ - argument: '*'
418
+ add_suffix: '='
348
419
  calls:
349
420
  - argument: '*'
350
421
  add_prefix: '@'
@@ -367,10 +438,9 @@ rules:
367
438
  - thread_cattr_accessor
368
439
  - thread_mattr_accessor
369
440
  defines:
370
- argument: '*'
371
- transforms:
372
- - original
373
- - add_suffix: '='
441
+ - argument: '*'
442
+ - argument: '*'
443
+ add_suffix: '='
374
444
  - name:
375
445
  - thread_cattr_reader
376
446
  - thread_mattr_reader
@@ -384,4 +454,4 @@ rules:
384
454
  add_suffix: '='
385
455
  - name: delegate_missing_to
386
456
  calls:
387
- argument: 1
457
+ argument: 0