leftovers 0.2.2 → 0.4.2

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 (146) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +41 -0
  3. data/README.md +35 -49
  4. data/docs/Configuration.md +627 -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 -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 +160 -97
  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 -49
  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 +61 -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 +66 -107
  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 +38 -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 +496 -0
  33. data/lib/leftovers/definition.rb +16 -41
  34. data/lib/leftovers/definition_node.rb +36 -0
  35. data/lib/leftovers/definition_set.rb +17 -24
  36. data/lib/leftovers/dynamic_processors.rb +11 -0
  37. data/lib/leftovers/dynamic_processors/call.rb +25 -0
  38. data/lib/leftovers/dynamic_processors/call_definition.rb +31 -0
  39. data/lib/leftovers/dynamic_processors/definition.rb +26 -0
  40. data/lib/leftovers/dynamic_processors/each.rb +19 -0
  41. data/lib/leftovers/dynamic_processors/null.rb +9 -0
  42. data/lib/leftovers/erb.rb +2 -2
  43. data/lib/leftovers/file.rb +3 -5
  44. data/lib/leftovers/file_collector.rb +82 -62
  45. data/lib/leftovers/file_list.rb +9 -15
  46. data/lib/leftovers/haml.rb +9 -12
  47. data/lib/leftovers/matcher_builders.rb +24 -0
  48. data/lib/leftovers/matcher_builders/and.rb +19 -0
  49. data/lib/leftovers/matcher_builders/and_not.rb +14 -0
  50. data/lib/leftovers/matcher_builders/argument_node_value.rb +21 -0
  51. data/lib/leftovers/matcher_builders/name.rb +29 -0
  52. data/lib/leftovers/matcher_builders/node.rb +40 -0
  53. data/lib/leftovers/matcher_builders/node_has_argument.rb +71 -0
  54. data/lib/leftovers/matcher_builders/node_has_keyword_argument.rb +22 -0
  55. data/lib/leftovers/matcher_builders/node_has_positional_argument.rb +24 -0
  56. data/lib/leftovers/matcher_builders/node_name.rb +15 -0
  57. data/lib/leftovers/matcher_builders/node_pair_name.rb +18 -0
  58. data/lib/leftovers/matcher_builders/node_pair_value.rb +16 -0
  59. data/lib/leftovers/matcher_builders/node_path.rb +14 -0
  60. data/lib/leftovers/matcher_builders/node_type.rb +28 -0
  61. data/lib/leftovers/matcher_builders/or.rb +73 -0
  62. data/lib/leftovers/matcher_builders/path.rb +15 -0
  63. data/lib/leftovers/matcher_builders/string.rb +11 -0
  64. data/lib/leftovers/matcher_builders/string_pattern.rb +19 -0
  65. data/lib/leftovers/matcher_builders/unless.rb +13 -0
  66. data/lib/leftovers/matchers.rb +26 -0
  67. data/lib/leftovers/matchers/all.rb +25 -0
  68. data/lib/leftovers/matchers/and.rb +24 -0
  69. data/lib/leftovers/matchers/any.rb +27 -0
  70. data/lib/leftovers/matchers/node_has_any_keyword_argument.rb +28 -0
  71. data/lib/leftovers/matchers/node_has_any_positional_argument_with_value.rb +25 -0
  72. data/lib/leftovers/matchers/node_has_positional_argument.rb +23 -0
  73. data/lib/leftovers/matchers/node_has_positional_argument_with_value.rb +25 -0
  74. data/lib/leftovers/matchers/node_name.rb +23 -0
  75. data/lib/leftovers/matchers/node_pair_value.rb +23 -0
  76. data/lib/leftovers/matchers/node_path.rb +23 -0
  77. data/lib/leftovers/matchers/node_scalar_value.rb +25 -0
  78. data/lib/leftovers/matchers/node_type.rb +23 -0
  79. data/lib/leftovers/matchers/not.rb +23 -0
  80. data/lib/leftovers/matchers/or.rb +26 -0
  81. data/lib/leftovers/merged_config.rb +24 -14
  82. data/lib/leftovers/parser.rb +2 -5
  83. data/lib/leftovers/processor_builders.rb +22 -0
  84. data/lib/leftovers/processor_builders/action.rb +63 -0
  85. data/lib/leftovers/processor_builders/add_prefix.rb +20 -0
  86. data/lib/leftovers/processor_builders/add_suffix.rb +20 -0
  87. data/lib/leftovers/processor_builders/argument.rb +25 -0
  88. data/lib/leftovers/processor_builders/dynamic.rb +27 -0
  89. data/lib/leftovers/processor_builders/each.rb +36 -0
  90. data/lib/leftovers/processor_builders/each_action.rb +51 -0
  91. data/lib/leftovers/processor_builders/each_dynamic.rb +54 -0
  92. data/lib/leftovers/processor_builders/each_for_definition_set.rb +36 -0
  93. data/lib/leftovers/processor_builders/itself.rb +13 -0
  94. data/lib/leftovers/processor_builders/keyword.rb +24 -0
  95. data/lib/leftovers/processor_builders/keyword_argument.rb +14 -0
  96. data/lib/leftovers/processor_builders/transform.rb +55 -0
  97. data/lib/leftovers/processor_builders/transform_chain.rb +24 -0
  98. data/lib/leftovers/processor_builders/transform_set.rb +47 -0
  99. data/lib/leftovers/processor_builders/value.rb +13 -0
  100. data/lib/leftovers/rake_task.rb +4 -4
  101. data/lib/leftovers/reporter.rb +1 -1
  102. data/lib/leftovers/value_processors.rb +40 -0
  103. data/lib/leftovers/value_processors/add_dynamic_prefix.rb +31 -0
  104. data/lib/leftovers/value_processors/add_dynamic_suffix.rb +31 -0
  105. data/lib/leftovers/value_processors/add_prefix.rb +20 -0
  106. data/lib/leftovers/value_processors/add_suffix.rb +20 -0
  107. data/lib/leftovers/value_processors/camelize.rb +24 -0
  108. data/lib/leftovers/value_processors/capitalize.rb +19 -0
  109. data/lib/leftovers/value_processors/deconstantize.rb +24 -0
  110. data/lib/leftovers/value_processors/delete_after.rb +22 -0
  111. data/lib/leftovers/value_processors/delete_before.rb +22 -0
  112. data/lib/leftovers/value_processors/delete_prefix.rb +26 -0
  113. data/lib/leftovers/value_processors/delete_suffix.rb +26 -0
  114. data/lib/leftovers/value_processors/demodulize.rb +24 -0
  115. data/lib/leftovers/value_processors/downcase.rb +19 -0
  116. data/lib/leftovers/value_processors/each.rb +21 -0
  117. data/lib/leftovers/value_processors/each_for_definition_set.rb +29 -0
  118. data/lib/leftovers/value_processors/each_keyword.rb +27 -0
  119. data/lib/leftovers/value_processors/each_keyword_argument.rb +27 -0
  120. data/lib/leftovers/value_processors/each_positional_argument.rb +24 -0
  121. data/lib/leftovers/value_processors/itself.rb +17 -0
  122. data/lib/leftovers/value_processors/keyword.rb +36 -0
  123. data/lib/leftovers/value_processors/keyword_argument.rb +36 -0
  124. data/lib/leftovers/value_processors/parameterize.rb +24 -0
  125. data/lib/leftovers/value_processors/placeholder.rb +18 -0
  126. data/lib/leftovers/value_processors/pluralize.rb +24 -0
  127. data/lib/leftovers/value_processors/positional_argument.rb +26 -0
  128. data/lib/leftovers/value_processors/replace_value.rb +18 -0
  129. data/lib/leftovers/value_processors/return_definition.rb +26 -0
  130. data/lib/leftovers/value_processors/return_string.rb +14 -0
  131. data/lib/leftovers/value_processors/singularize.rb +24 -0
  132. data/lib/leftovers/value_processors/split.rb +22 -0
  133. data/lib/leftovers/value_processors/swapcase.rb +19 -0
  134. data/lib/leftovers/value_processors/titleize.rb +24 -0
  135. data/lib/leftovers/value_processors/underscore.rb +24 -0
  136. data/lib/leftovers/value_processors/upcase.rb +19 -0
  137. data/lib/leftovers/version.rb +1 -1
  138. metadata +190 -28
  139. data/lib/config/selenium.yml +0 -21
  140. data/lib/leftovers/argument_rule.rb +0 -219
  141. data/lib/leftovers/core_ext.rb +0 -13
  142. data/lib/leftovers/hash_rule.rb +0 -40
  143. data/lib/leftovers/name_rule.rb +0 -53
  144. data/lib/leftovers/rule.rb +0 -74
  145. data/lib/leftovers/transform_rule.rb +0 -171
  146. 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.10.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_
@@ -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,30 +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
- - skip: true
24
- names:
25
- 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
26
26
  path: /app/helpers
27
- - skip: true
28
- names:
29
- has_suffix: Preview
27
+ - has_suffix: Preview
30
28
  path: '**/mailers/previews/**/*_preview.rb'
29
+
30
+ dynamic:
31
31
  - names:
32
32
  - after_initialize
33
33
  - after_find
@@ -53,10 +53,10 @@ rules:
53
53
  - after_destroy_commit
54
54
  - after_save_commit
55
55
  calls:
56
- arguments:
57
- - 1
58
- - if
59
- - unless
56
+ - arguments: 0
57
+ - arguments: [if, unless]
58
+ nested:
59
+ arguments: '*'
60
60
  - name:
61
61
  - after_action
62
62
  - append_after_action
@@ -72,22 +72,24 @@ rules:
72
72
  - skip_around_action
73
73
  - validates_associated
74
74
  calls:
75
- - arguments:
76
- - '*'
77
- - if
78
- - unless
75
+ - arguments: ['*', if, unless]
79
76
  - name: validates
80
77
  calls:
81
78
  - arguments:
82
79
  - '*'
83
- - 'in'
80
+ - within
84
81
  - inclusion
85
82
  - scope
86
83
  - if
87
84
  - unless
88
- - keys: '*'
85
+ - arguments: inclusion
86
+ nested:
87
+ arguments: 'in'
88
+ - keywords:
89
+ unless: [if, unless]
89
90
  camelize: true
90
91
  add_suffix: Validator
92
+ split: '::'
91
93
  - names:
92
94
  - validate
93
95
  - validate_associated
@@ -122,8 +124,8 @@ rules:
122
124
  - url_field
123
125
  - week_field
124
126
  calls:
125
- - arguments: [1,2] # 1: with a receiver, 2: with no receiver
126
- - arguments: [1,2]
127
+ - arguments: [0,1] # 0: with a receiver, 1: with no receiver
128
+ - arguments: [0,1]
127
129
  add_suffix: '='
128
130
  - name: fields_for
129
131
  calls:
@@ -131,97 +133,146 @@ rules:
131
133
  add_suffix: _attributes
132
134
  - name: options_from_collection_for_select
133
135
  calls:
134
- - arguments: [2,3]
136
+ - arguments: [1,2]
135
137
  - name:
136
138
  - collection_select
137
139
  - collection_check_boxes
138
140
  - collection_radio_buttons
139
141
  calls:
140
- - argument: 2
142
+ - argument: 1
141
143
  add_suffix: '='
142
- - arguments: [4,5]
144
+ - arguments: [3,4]
143
145
  - name: grouped_collection_select
144
146
  calls:
145
- - argument: 2
147
+ - argument: 1
146
148
  add_suffix: '='
147
- - arguments: [4,5,6,7]
149
+ - arguments: [3,4,5,6]
148
150
  - name: option_groups_from_collection_for_select
149
151
  calls:
150
- - arguments: [1,2,3,4]
152
+ - arguments: [0,1,2,3]
151
153
  - name: scope
152
154
  path: /app/models
153
155
  defines:
154
- argument: 1 # ar
156
+ argument: 0 # ar
155
157
  - name: scope
156
158
  path: /config/routes*
157
159
  calls:
158
160
  argument: module # routes
159
161
  camelize: true
162
+ split: '::'
160
163
  - name: namespace
161
164
  calls:
162
- - argument: 1
165
+ - argument: 0
163
166
  camelize: true
167
+ split: '::'
164
168
  - name:
165
169
  - attribute
166
170
  - alias_attribute
167
171
  path: app/models/*
168
172
  defines:
169
- argument: 1
170
- linked_transforms:
173
+ argument: 0
174
+ transforms:
171
175
  - original
172
176
  - add_suffix: '?'
173
177
  - add_suffix: '='
174
178
  - name: alias_attribute
175
179
  calls:
176
- - argument: 2
177
- - argument: 2
180
+ - argument: 1
181
+ - argument: 1
178
182
  add_suffix: '?'
179
- - argument: 2
183
+ - argument: 1
180
184
  add_suffix: '='
181
185
  - name:
182
186
  - has_one
183
187
  - belongs_to
188
+ unless:
189
+ has_argument: class_name
184
190
  calls:
185
- argument: 1
191
+ argument: 0
186
192
  camelize: true
187
- unless:
188
- has_argument: class_name
193
+ split: '::'
194
+
189
195
  - name:
190
196
  - has_many
191
197
  - has_and_belongs_to_many
198
+ unless:
199
+ has_argument: class_name
192
200
  calls:
193
- argument: 1
194
- camelize: true
195
- singularize: true
196
- unless:
197
- 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=
198
217
  - name:
199
218
  - has_many
200
219
  - has_one
201
220
  - has_and_belongs_to_many
202
221
  calls:
203
- 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
204
232
  - name:
205
233
  - has_one
206
- - has_many
207
234
  - belongs_to
208
- - has_and_belongs_to_many
209
235
  defines:
210
- - argument: 1
211
- linked_transforms:
236
+ - argument: 0
237
+ transforms:
212
238
  - original
213
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
214
273
  calls:
215
- - argument:
216
- - through
217
- - class_name
218
- - inverse_of
219
- - argument: 1
220
- if:
221
- has_argument: dependent
222
- - argument: 1
223
- if:
224
- has_argument: inverse_of
274
+ argument: 0
275
+
225
276
  - name:
226
277
  - rescue_from
227
278
  calls:
@@ -235,37 +286,47 @@ rules:
235
286
  - put
236
287
  - root
237
288
  calls:
238
- - arguments: [1, action]
289
+ - arguments: [0, action]
239
290
  - argument: '**'
240
291
  delete_before: '#'
241
292
  - argument: '**'
242
293
  delete_after: '#'
243
294
  camelize: true
244
295
  add_suffix: Controller
296
+ split: '::'
245
297
  - name: delegate
298
+ has_argument:
299
+ at: prefix
300
+ has_value: true
246
301
  defines:
247
302
  - argument: '*'
248
- if:
249
- has_argument:
250
- keyword: prefix
251
- value: true
252
303
  add_prefix:
253
- from_argument: to
254
- 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:
255
314
  - argument: '*'
256
- if:
257
- has_argument:
258
- keyword: prefix
259
- value:
260
- type: [String, Symbol]
261
315
  add_prefix:
262
- from_argument: prefix
263
- joiner: '_'
316
+ argument: prefix
317
+ add_suffix: '_'
264
318
  calls:
265
319
  - argument: to
266
320
  - argument: '*'
267
- if:
268
- 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
269
330
  - name:
270
331
  - resource
271
332
  - resources
@@ -274,28 +335,31 @@ rules:
274
335
  - argument: controller
275
336
  camelize: true
276
337
  add_suffix: Controller
338
+ split: '::'
277
339
  - name:
278
340
  - resources
279
341
  - controller
280
342
  - namespace
281
343
  calls:
282
- - argument: 1
344
+ - argument: 0
283
345
  camelize: true
284
346
  add_suffix: Controller
347
+ split: '::'
285
348
  - name: accepts_nested_attributes_for
286
349
  defines:
287
350
  argument: '*'
288
- linked_transforms:
351
+ transforms:
289
352
  - add_suffix: _attributes
290
353
  - add_suffix: _attributes=
291
354
  calls:
292
355
  argument: reject_if
293
356
  - name: resource
294
357
  calls:
295
- - argument: 1
358
+ - argument: 0
296
359
  camelize: true
297
360
  pluralize: true
298
361
  add_suffix: Controller
362
+ split: '::'
299
363
  - name:
300
364
  - new
301
365
  - create
@@ -304,16 +368,17 @@ rules:
304
368
  - update!
305
369
  - assign_attributes
306
370
  calls:
307
- keys: '*'
371
+ keyword: '**'
308
372
  add_suffix: '='
309
373
  - name: permit
310
374
  calls:
311
375
  arguments: ['*', '**']
312
- keys: '*'
376
+ keywords: '**'
313
377
  add_suffix: "="
378
+ recursive: true
314
379
  - name: layout
315
380
  calls:
316
- argument: 1
381
+ argument: 0
317
382
  - name:
318
383
  - includes
319
384
  - preload
@@ -323,7 +388,7 @@ rules:
323
388
  - left_outer_joins
324
389
  calls:
325
390
  arguments: ['*', '**']
326
- keys: '*'
391
+ keywords: '**'
327
392
  - name:
328
393
  - string
329
394
  - text
@@ -339,7 +404,7 @@ rules:
339
404
  - boolean
340
405
  path: /db/schema.rb
341
406
  calls:
342
- argument: 1
407
+ argument: 0
343
408
  transforms:
344
409
  - original
345
410
  - add_suffix: '='
@@ -349,9 +414,8 @@ rules:
349
414
  - mattr_accessor
350
415
  defines:
351
416
  - argument: '*'
352
- transforms:
353
- - original
354
- - add_suffix: '='
417
+ - argument: '*'
418
+ add_suffix: '='
355
419
  calls:
356
420
  - argument: '*'
357
421
  add_prefix: '@'
@@ -374,10 +438,9 @@ rules:
374
438
  - thread_cattr_accessor
375
439
  - thread_mattr_accessor
376
440
  defines:
377
- argument: '*'
378
- transforms:
379
- - original
380
- - add_suffix: '='
441
+ - argument: '*'
442
+ - argument: '*'
443
+ add_suffix: '='
381
444
  - name:
382
445
  - thread_cattr_reader
383
446
  - thread_mattr_reader
@@ -391,4 +454,4 @@ rules:
391
454
  add_suffix: '='
392
455
  - name: delegate_missing_to
393
456
  calls:
394
- argument: 1
457
+ argument: 0