leftovers 0.3.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 (144) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -0
  3. data/README.md +28 -45
  4. data/docs/Configuration.md +598 -0
  5. data/exe/leftovers +1 -1
  6. data/leftovers.gemspec +9 -6
  7. data/lib/config/attr_encrypted.yml +3 -4
  8. data/lib/config/audited.yml +9 -4
  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 +125 -107
  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 +40 -50
  19. data/lib/config/selenium-webdriver.yml +19 -21
  20. data/lib/config/sidekiq.yml +4 -8
  21. data/lib/config/will_paginate.yml +12 -14
  22. data/lib/leftovers.rb +38 -26
  23. data/lib/leftovers/ast.rb +8 -0
  24. data/lib/leftovers/ast/builder.rb +4 -4
  25. data/lib/leftovers/ast/node.rb +50 -77
  26. data/lib/leftovers/backports.rb +27 -23
  27. data/lib/leftovers/cli.rb +0 -3
  28. data/lib/leftovers/collector.rb +4 -8
  29. data/lib/leftovers/config.rb +19 -25
  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 +11 -36
  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 +65 -49
  44. data/lib/leftovers/file_list.rb +0 -1
  45. data/lib/leftovers/haml.rb +1 -1
  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 +13 -8
  81. data/lib/leftovers/parser.rb +1 -4
  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 +1 -1
  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 +143 -24
  138. data/lib/leftovers/argument_rule.rb +0 -229
  139. data/lib/leftovers/core_ext.rb +0 -15
  140. data/lib/leftovers/hash_rule.rb +0 -42
  141. data/lib/leftovers/name_rule.rb +0 -98
  142. data/lib/leftovers/rule.rb +0 -82
  143. data/lib/leftovers/transform_rule.rb +0 -169
  144. data/lib/leftovers/value_rule.rb +0 -57
@@ -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
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,20 +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
38
  spec.add_development_dependency 'rake', '>= 13'
37
39
  spec.add_development_dependency 'rspec', '~> 3.0'
38
- spec.add_development_dependency 'rubocop', '~> 0.82'
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'
41
43
  spec.add_development_dependency 'simplecov', '>= 0.18.5'
42
44
  spec.add_development_dependency 'simplecov-console'
43
45
  spec.add_development_dependency 'tty_string', '>= 0.2.1'
44
46
 
45
47
  spec.add_development_dependency 'spellr', '>= 0.8.1'
46
- spec.add_dependency 'fast_ignore', '>= 0.11.0'
48
+ spec.add_dependency 'fast_ignore', '>= 0.15.1'
49
+ spec.add_dependency 'json_schemer'
47
50
  spec.add_dependency 'parallel'
48
51
  spec.add_dependency 'parser'
49
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_
@@ -1,4 +1,9 @@
1
- rules:
2
- name: current_user_method=
3
- calls:
4
- argument: 1
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,31 +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
- - APP_PATH
22
- - APP_ROOT
23
- - default_url_options # called by url_for
24
- - skip: true
25
- names:
26
- 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
27
26
  path: /app/helpers
28
- - skip: true
29
- names:
30
- has_suffix: Preview
27
+ - has_suffix: Preview
31
28
  path: '**/mailers/previews/**/*_preview.rb'
29
+
30
+ dynamic:
32
31
  - names:
33
32
  - after_initialize
34
33
  - after_find
@@ -54,10 +53,10 @@ rules:
54
53
  - after_destroy_commit
55
54
  - after_save_commit
56
55
  calls:
57
- arguments:
58
- - 1
59
- - if
60
- - unless
56
+ - arguments: 0
57
+ - arguments: [if, unless]
58
+ nested:
59
+ arguments: '*'
61
60
  - name:
62
61
  - after_action
63
62
  - append_after_action
@@ -73,23 +72,24 @@ rules:
73
72
  - skip_around_action
74
73
  - validates_associated
75
74
  calls:
76
- - arguments:
77
- - '*'
78
- - if
79
- - unless
75
+ - arguments: ['*', if, unless]
80
76
  - name: validates
81
77
  calls:
82
78
  - arguments:
83
79
  - '*'
84
- - 'in'
85
80
  - within
86
81
  - inclusion
87
82
  - scope
88
83
  - if
89
84
  - unless
90
- - keys: '*'
85
+ - arguments: inclusion
86
+ nested:
87
+ arguments: 'in'
88
+ - keywords:
89
+ unless: [if, unless]
91
90
  camelize: true
92
91
  add_suffix: Validator
92
+ split: '::'
93
93
  - names:
94
94
  - validate
95
95
  - validate_associated
@@ -124,8 +124,8 @@ rules:
124
124
  - url_field
125
125
  - week_field
126
126
  calls:
127
- - arguments: [1,2] # 1: with a receiver, 2: with no receiver
128
- - arguments: [1,2]
127
+ - arguments: [0,1] # 0: with a receiver, 1: with no receiver
128
+ - arguments: [0,1]
129
129
  add_suffix: '='
130
130
  - name: fields_for
131
131
  calls:
@@ -133,73 +133,81 @@ rules:
133
133
  add_suffix: _attributes
134
134
  - name: options_from_collection_for_select
135
135
  calls:
136
- - arguments: [2,3]
136
+ - arguments: [1,2]
137
137
  - name:
138
138
  - collection_select
139
139
  - collection_check_boxes
140
140
  - collection_radio_buttons
141
141
  calls:
142
- - argument: 2
142
+ - argument: 1
143
143
  add_suffix: '='
144
- - arguments: [4,5]
144
+ - arguments: [3,4]
145
145
  - name: grouped_collection_select
146
146
  calls:
147
- - argument: 2
147
+ - argument: 1
148
148
  add_suffix: '='
149
- - arguments: [4,5,6,7]
149
+ - arguments: [3,4,5,6]
150
150
  - name: option_groups_from_collection_for_select
151
151
  calls:
152
- - arguments: [1,2,3,4]
152
+ - arguments: [0,1,2,3]
153
153
  - name: scope
154
154
  path: /app/models
155
155
  defines:
156
- argument: 1 # ar
156
+ argument: 0 # ar
157
157
  - name: scope
158
158
  path: /config/routes*
159
159
  calls:
160
160
  argument: module # routes
161
161
  camelize: true
162
+ split: '::'
162
163
  - name: namespace
163
164
  calls:
164
- - argument: 1
165
+ - argument: 0
165
166
  camelize: true
167
+ split: '::'
166
168
  - name:
167
169
  - attribute
168
170
  - alias_attribute
169
171
  path: app/models/*
170
172
  defines:
171
- argument: 1
172
- linked_transforms:
173
+ argument: 0
174
+ transforms:
173
175
  - original
174
176
  - add_suffix: '?'
175
177
  - add_suffix: '='
176
178
  - name: alias_attribute
177
179
  calls:
178
- - argument: 2
179
- - argument: 2
180
+ - argument: 1
181
+ - argument: 1
180
182
  add_suffix: '?'
181
- - argument: 2
183
+ - argument: 1
182
184
  add_suffix: '='
183
185
  - name:
184
186
  - has_one
185
187
  - belongs_to
188
+ unless:
189
+ has_argument: class_name
186
190
  calls:
187
- argument: 1
191
+ argument: 0
188
192
  camelize: true
189
- unless:
190
- has_argument: class_name
193
+ split: '::'
194
+
191
195
  - name:
192
196
  - has_many
193
197
  - has_and_belongs_to_many
198
+ unless:
199
+ has_argument: class_name
194
200
  calls:
195
- - argument: 1
201
+ - argument: 0
196
202
  camelize: true
197
203
  singularize: true
198
- unless:
199
- has_argument: class_name
204
+ split: '::'
205
+ - name:
206
+ - has_many
207
+ - has_and_belongs_to_many
200
208
  defines:
201
- - argument: 1
202
- linked_transforms:
209
+ - argument: 0
210
+ transforms:
203
211
  - original
204
212
  - add_suffix: '='
205
213
  - singularize: true
@@ -225,8 +233,8 @@ rules:
225
233
  - has_one
226
234
  - belongs_to
227
235
  defines:
228
- - argument: 1
229
- linked_transforms:
236
+ - argument: 0
237
+ transforms:
230
238
  - original
231
239
  - add_suffix: '='
232
240
  - add_prefix: build_
@@ -235,12 +243,12 @@ rules:
235
243
  add_suffix: '!'
236
244
  - add_prefix: reload
237
245
  - name: belongs_to
246
+ unless:
247
+ has_argument:
248
+ at: optional
249
+ has_value: true
238
250
  calls:
239
- argument: 1
240
- unless:
241
- has_argument:
242
- keyword: optional
243
- value: true
251
+ argument: 0
244
252
 
245
253
  - name:
246
254
  - has_one
@@ -248,25 +256,23 @@ rules:
248
256
  - belongs_to
249
257
  - has_and_belongs_to_many
250
258
  calls:
251
- - argument:
252
- - class_name
253
- - inverse_of
259
+ - argument: class_name
260
+ split: '::'
261
+ - argument: inverse_of
254
262
  - argument: touch
255
263
  add_suffix: '='
256
- - argument: 1
257
- if:
258
- has_argument: dependent
259
- - argument: 1
260
- if:
261
- has_argument: inverse_of
262
- - argument: 1
263
- if:
264
- has_argument: touch
265
- - argument: 1
266
- if:
267
- has_argument:
268
- keyword: validate
269
- value: true
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
273
+ calls:
274
+ argument: 0
275
+
270
276
  - name:
271
277
  - rescue_from
272
278
  calls:
@@ -280,37 +286,47 @@ rules:
280
286
  - put
281
287
  - root
282
288
  calls:
283
- - arguments: [1, action]
289
+ - arguments: [0, action]
284
290
  - argument: '**'
285
291
  delete_before: '#'
286
292
  - argument: '**'
287
293
  delete_after: '#'
288
294
  camelize: true
289
295
  add_suffix: Controller
296
+ split: '::'
290
297
  - name: delegate
298
+ has_argument:
299
+ at: prefix
300
+ has_value: true
291
301
  defines:
292
302
  - argument: '*'
293
- if:
294
- has_argument:
295
- keyword: prefix
296
- value: true
297
303
  add_prefix:
298
- from_argument: to
299
- 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:
300
314
  - argument: '*'
301
- if:
302
- has_argument:
303
- keyword: prefix
304
- value:
305
- type: [String, Symbol]
306
315
  add_prefix:
307
- from_argument: prefix
308
- joiner: '_'
316
+ argument: prefix
317
+ add_suffix: '_'
309
318
  calls:
310
319
  - argument: to
311
320
  - argument: '*'
312
- if:
313
- 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
314
330
  - name:
315
331
  - resource
316
332
  - resources
@@ -319,28 +335,31 @@ rules:
319
335
  - argument: controller
320
336
  camelize: true
321
337
  add_suffix: Controller
338
+ split: '::'
322
339
  - name:
323
340
  - resources
324
341
  - controller
325
342
  - namespace
326
343
  calls:
327
- - argument: 1
344
+ - argument: 0
328
345
  camelize: true
329
346
  add_suffix: Controller
347
+ split: '::'
330
348
  - name: accepts_nested_attributes_for
331
349
  defines:
332
350
  argument: '*'
333
- linked_transforms:
351
+ transforms:
334
352
  - add_suffix: _attributes
335
353
  - add_suffix: _attributes=
336
354
  calls:
337
355
  argument: reject_if
338
356
  - name: resource
339
357
  calls:
340
- - argument: 1
358
+ - argument: 0
341
359
  camelize: true
342
360
  pluralize: true
343
361
  add_suffix: Controller
362
+ split: '::'
344
363
  - name:
345
364
  - new
346
365
  - create
@@ -349,16 +368,17 @@ rules:
349
368
  - update!
350
369
  - assign_attributes
351
370
  calls:
352
- keys: '*'
371
+ keyword: '**'
353
372
  add_suffix: '='
354
373
  - name: permit
355
374
  calls:
356
375
  arguments: ['*', '**']
357
- keys: '*'
376
+ keywords: '**'
358
377
  add_suffix: "="
378
+ recursive: true
359
379
  - name: layout
360
380
  calls:
361
- argument: 1
381
+ argument: 0
362
382
  - name:
363
383
  - includes
364
384
  - preload
@@ -368,7 +388,7 @@ rules:
368
388
  - left_outer_joins
369
389
  calls:
370
390
  arguments: ['*', '**']
371
- keys: '*'
391
+ keywords: '**'
372
392
  - name:
373
393
  - string
374
394
  - text
@@ -384,7 +404,7 @@ rules:
384
404
  - boolean
385
405
  path: /db/schema.rb
386
406
  calls:
387
- argument: 1
407
+ argument: 0
388
408
  transforms:
389
409
  - original
390
410
  - add_suffix: '='
@@ -394,9 +414,8 @@ rules:
394
414
  - mattr_accessor
395
415
  defines:
396
416
  - argument: '*'
397
- transforms:
398
- - original
399
- - add_suffix: '='
417
+ - argument: '*'
418
+ add_suffix: '='
400
419
  calls:
401
420
  - argument: '*'
402
421
  add_prefix: '@'
@@ -419,10 +438,9 @@ rules:
419
438
  - thread_cattr_accessor
420
439
  - thread_mattr_accessor
421
440
  defines:
422
- argument: '*'
423
- transforms:
424
- - original
425
- - add_suffix: '='
441
+ - argument: '*'
442
+ - argument: '*'
443
+ add_suffix: '='
426
444
  - name:
427
445
  - thread_cattr_reader
428
446
  - thread_mattr_reader
@@ -436,4 +454,4 @@ rules:
436
454
  add_suffix: '='
437
455
  - name: delegate_missing_to
438
456
  calls:
439
- argument: 1
457
+ argument: 0