decidim-reporting_proposals 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +32 -0
  3. data/.erb-lint.yml +30 -0
  4. data/.eslintignore +3 -0
  5. data/.eslintrc.json +239 -0
  6. data/.github/workflows/codeql-analysis.yml +74 -0
  7. data/.github/workflows/lint.yml +45 -0
  8. data/.github/workflows/test_integration.yml +125 -0
  9. data/.github/workflows/test_unit.yml +51 -0
  10. data/.gitignore +27 -0
  11. data/.rspec +3 -0
  12. data/.rubocop.yml +3 -0
  13. data/.rubocop_rails.yml +87 -0
  14. data/.rubocop_ruby.yml +1754 -0
  15. data/.ruby-version +1 -0
  16. data/.simplecov +13 -0
  17. data/CODE_OF_CONDUCT.md +74 -0
  18. data/Gemfile +40 -0
  19. data/Gemfile.lock +815 -0
  20. data/LICENSE-AGPLv3.txt +661 -0
  21. data/README.md +166 -0
  22. data/Rakefile +40 -0
  23. data/app/cells/decidim/reporting_proposals/edit_note_modal/show.erb +20 -0
  24. data/app/cells/decidim/reporting_proposals/edit_note_modal_cell.rb +37 -0
  25. data/app/commands/concerns/decidim/reporting_proposals/admin/create_category_override.rb +32 -0
  26. data/app/commands/concerns/decidim/reporting_proposals/admin/update_category_override.rb +32 -0
  27. data/app/commands/concerns/decidim/reporting_proposals/create_report_override.rb +19 -0
  28. data/app/commands/decidim/reporting_proposals/admin/update_proposal.rb +46 -0
  29. data/app/commands/decidim/reporting_proposals/admin/update_proposal_note.rb +36 -0
  30. data/app/commands/decidim/reporting_proposals/create_reporting_proposal.rb +68 -0
  31. data/app/controllers/concerns/decidim/reporting_proposals/admin/categories_controller_override.rb +16 -0
  32. data/app/controllers/concerns/decidim/reporting_proposals/admin/needs_header_snippets.rb +50 -0
  33. data/app/controllers/concerns/decidim/reporting_proposals/admin/proposal_answer_templates_controller_override.rb +18 -0
  34. data/app/controllers/concerns/decidim/reporting_proposals/admin/proposal_answers_controller_override.rb +35 -0
  35. data/app/controllers/concerns/decidim/reporting_proposals/admin/proposals_controller_override.rb +28 -0
  36. data/app/controllers/concerns/decidim/reporting_proposals/needs_proposal_extra_validations_snippets.rb +51 -0
  37. data/app/controllers/concerns/decidim/reporting_proposals/proposals_controller_override.rb +113 -0
  38. data/app/controllers/decidim/reporting_proposals/admin/application_controller.rb +18 -0
  39. data/app/controllers/decidim/reporting_proposals/admin/proposal_notes_controller.rb +38 -0
  40. data/app/controllers/decidim/reporting_proposals/admin/proposals_controller.rb +61 -0
  41. data/app/controllers/decidim/reporting_proposals/application_controller.rb +11 -0
  42. data/app/controllers/decidim/reporting_proposals/geolocation_controller.rb +32 -0
  43. data/app/forms/concerns/decidim/reporting_proposals/admin/category_form_override.rb +19 -0
  44. data/app/forms/concerns/decidim/reporting_proposals/form_builder_override.rb +48 -0
  45. data/app/forms/concerns/decidim/reporting_proposals/map_builder_override.rb +60 -0
  46. data/app/forms/decidim/reporting_proposals/admin/proposal_photo_form.rb +23 -0
  47. data/app/forms/decidim/reporting_proposals/proposal_form.rb +33 -0
  48. data/app/helpers/concerns/decidim/reporting_proposals/admin/proposals_helper_override.rb +63 -0
  49. data/app/helpers/concerns/decidim/reporting_proposals/proposal_wizard_helper_override.rb +61 -0
  50. data/app/jobs/decidim/reporting_proposals/assign_proposal_valuators_job.rb +51 -0
  51. data/app/models/concerns/decidim/reporting_proposals/category_override.rb +28 -0
  52. data/app/models/concerns/decidim/reporting_proposals/participatory_space_role_config/valuator_override.rb +17 -0
  53. data/app/models/concerns/decidim/reporting_proposals/participatory_space_user_role_override.rb +25 -0
  54. data/app/models/decidim/reporting_proposals/category_valuator.rb +28 -0
  55. data/app/overrides/decidim/admin/categories/_form/add_valuators_field.html.erb.deface +3 -0
  56. data/app/overrides/decidim/admin/categories/index/add_table_column_name.html.erb.deface +3 -0
  57. data/app/overrides/decidim/admin/categories/index/add_valuators.html.erb.deface +3 -0
  58. data/app/overrides/decidim/proposals/admin/proposal_notes/_proposal_notes/add_edit_link.html.erb.deface +3 -0
  59. data/app/overrides/decidim/proposals/admin/proposal_notes/_proposal_notes/add_links_to_note.html.erb.deface +3 -0
  60. data/app/overrides/decidim/proposals/admin/proposals/_proposal-tr/add_td_hide_action.html.erb.deface +3 -0
  61. data/app/overrides/decidim/proposals/admin/proposals/_proposal-tr/add_valuators_name.html.erb.deface +9 -0
  62. data/app/overrides/decidim/proposals/admin/proposals/_proposal-tr/replace_td_title.html.erb.deface +3 -0
  63. data/app/overrides/decidim/proposals/admin/proposals/show/add_photo_management.html.erb.deface +3 -0
  64. data/app/overrides/decidim/proposals/admin/proposals/show/add_send_email_btn.html.erb.deface +3 -0
  65. data/app/overrides/decidim/proposals/admin/proposals/show/remove_photos.html.erb.deface +4 -0
  66. data/app/overrides/decidim/proposals/admin/proposals/show/replace_valuators.html.erb.deface +3 -0
  67. data/app/overrides/decidim/proposals/proposals/_proposal_similar/add_distance_badge.html.erb.deface +5 -0
  68. data/app/overrides/decidim/proposals/proposals/_wizard_header/replace_title.html.erb.deface +14 -0
  69. data/app/overrides/decidim/proposals/proposals/edit/add_user_group.html.erb.deface +3 -0
  70. data/app/overrides/decidim/proposals/proposals/edit/replace_javascript.html.erb.deface +8 -0
  71. data/app/overrides/decidim/proposals/proposals/edit/replace_partial_edit_form_fields.html.erb.deface +3 -0
  72. data/app/overrides/decidim/proposals/proposals/edit_draft/add_user_group.html.erb.deface +3 -0
  73. data/app/overrides/decidim/proposals/proposals/edit_draft/replace_javascript.html.erb.deface +8 -0
  74. data/app/overrides/decidim/proposals/proposals/edit_draft/replace_partial_edit_form_fields.html.erb.deface +3 -0
  75. data/app/overrides/decidim/proposals/proposals/index/add_additional_button.html.erb.deface +3 -0
  76. data/app/overrides/decidim/proposals/proposals/new/remove_title.html.erb.deface +1 -0
  77. data/app/overrides/decidim/proposals/proposals/new/replace_body.html.erb.deface +3 -0
  78. data/app/overrides/decidim/proposals/proposals/new/replace_javascript.html.erb.deface +8 -0
  79. data/app/overrides/decidim/proposals/proposals/show/add_additional_button.html.erb.deface +3 -0
  80. data/app/overrides/layouts/decidim/_process_header_steps/always_show_new_proposals.html.erb.deface +3 -0
  81. data/app/packs/entrypoints/decidim_reporting_proposals.js +6 -0
  82. data/app/packs/entrypoints/decidim_reporting_proposals_camera.js +2 -0
  83. data/app/packs/entrypoints/decidim_reporting_proposals_geocoding.js +2 -0
  84. data/app/packs/entrypoints/decidim_reporting_proposals_js_validations.js +1 -0
  85. data/app/packs/entrypoints/decidim_reporting_proposals_list_component_admin.js +1 -0
  86. data/app/packs/entrypoints/decidim_reporting_proposals_manage_component_admin.js +1 -0
  87. data/app/packs/images/.keep +0 -0
  88. data/app/packs/src/decidim/reporting_proposals/proposal_extra_validations.js +89 -0
  89. data/app/packs/src/decidim/reporting_proposals/proposals/add_proposal.js +66 -0
  90. data/app/packs/src/decidim/reporting_proposals/reverse_geocoding.js +54 -0
  91. data/app/packs/src/decidim/reporting_proposals/user_camera_inputs.js +49 -0
  92. data/app/packs/stylesheets/decidim/reporting_proposals/geocoding_addons.scss +34 -0
  93. data/app/packs/stylesheets/decidim/reporting_proposals/list_component_admin.scss +27 -0
  94. data/app/packs/stylesheets/decidim/reporting_proposals/manage_component_admin.scss +31 -0
  95. data/app/packs/stylesheets/decidim/reporting_proposals/proposals/add_proposal.scss +12 -0
  96. data/app/packs/stylesheets/decidim/reporting_proposals/user_camera_inputs.scss +19 -0
  97. data/app/permissions/concerns/decidim/reporting_proposals/admin/permissions_override.rb +27 -0
  98. data/app/permissions/decidim/reporting_proposals/admin/permissions.rb +79 -0
  99. data/app/permissions/decidim/reporting_proposals/permissions.rb +17 -0
  100. data/app/queries/decidim/reporting_proposals/nearby_proposals.rb +57 -0
  101. data/app/serializers/decidim/reporting_proposals/proposal_serializer_override.rb +77 -0
  102. data/app/validators/concerns/decidim/reporting_proposals/component_validator_override.rb +25 -0
  103. data/app/views/decidim/proposals/admin/proposal_notes/_editing_note.html.erb +18 -0
  104. data/app/views/decidim/proposals/admin/proposal_notes/_proposal_notes_body.html.erb +6 -0
  105. data/app/views/decidim/proposals/admin/proposals/_send_email_button.html.erb +4 -0
  106. data/app/views/decidim/proposals/proposals/_additional_button.html.erb +6 -0
  107. data/app/views/decidim/reporting_proposals/admin/categories/_column_valuators.html.erb +1 -0
  108. data/app/views/decidim/reporting_proposals/admin/categories/_valuators.html.erb +1 -0
  109. data/app/views/decidim/reporting_proposals/admin/categories/_valuators_field.html.erb +7 -0
  110. data/app/views/decidim/reporting_proposals/admin/proposals/_photo_form.html.erb +24 -0
  111. data/app/views/decidim/reporting_proposals/admin/proposals/_photo_gallery.html.erb +21 -0
  112. data/app/views/decidim/reporting_proposals/admin/proposals/_photos.html.erb +14 -0
  113. data/app/views/decidim/reporting_proposals/admin/proposals/_proposal_td_hide.html.erb +20 -0
  114. data/app/views/decidim/reporting_proposals/admin/proposals/_proposal_td_title.html.erb +41 -0
  115. data/app/views/decidim/reporting_proposals/proposals/_additional_button_for_show.html.erb +6 -0
  116. data/app/views/decidim/reporting_proposals/proposals/_new_proposal_fields.html.erb +7 -0
  117. data/app/views/decidim/reporting_proposals/proposals/_reporting_proposal_fields.html.erb +113 -0
  118. data/app/views/decidim/reporting_proposals/proposals/_user_group.html.erb +5 -0
  119. data/bin/rails +6 -0
  120. data/bin/webpack-dev-server +6 -0
  121. data/codecov.yml +11 -0
  122. data/config/assets.rb +13 -0
  123. data/config/i18n-tasks.yml +13 -0
  124. data/config/locales/ca.yml +366 -0
  125. data/config/locales/de.yml +366 -0
  126. data/config/locales/en.yml +426 -0
  127. data/config/locales/es.yml +366 -0
  128. data/crowdin.yml +45 -0
  129. data/db/migrate/20221219151846_create_decidim_categories_valuators.rb +17 -0
  130. data/decidim-reporting_proposals.gemspec +34 -0
  131. data/lib/decidim/api/reporting_proposals_type.rb +10 -0
  132. data/lib/decidim/reporting_proposals/admin.rb +8 -0
  133. data/lib/decidim/reporting_proposals/admin_engine.rb +31 -0
  134. data/lib/decidim/reporting_proposals/component.rb +490 -0
  135. data/lib/decidim/reporting_proposals/config.rb +53 -0
  136. data/lib/decidim/reporting_proposals/engine.rb +96 -0
  137. data/lib/decidim/reporting_proposals/test/factories.rb +13 -0
  138. data/lib/decidim/reporting_proposals/version.rb +15 -0
  139. data/lib/decidim/reporting_proposals.rb +13 -0
  140. data/package-lock.json +7844 -0
  141. data/package.json +195 -0
  142. metadata +319 -0
data/.rubocop_ruby.yml ADDED
@@ -0,0 +1,1754 @@
1
+ require:
2
+ - rubocop-rspec
3
+ - rubocop-faker
4
+
5
+ # Common configuration.
6
+ AllCops:
7
+ Include:
8
+ - .simplecov
9
+ - "**/*.rb"
10
+ - "**/*.rake"
11
+ - "**/*.gemspec"
12
+ - "**/*.ru"
13
+ - "**/Gemfile"
14
+ - "**/Rakefile"
15
+ Exclude:
16
+ - "**/vendor/**/*"
17
+ - "development_app/**/*"
18
+ - "spec/decidim_dummy_app/**/*"
19
+ - "node_modules/**/*"
20
+ - "db/migrate/*"
21
+ - "db/schema.rb"
22
+ # Default formatter will be used if no -f/--format option is given.
23
+ DefaultFormatter: progress
24
+ # Cop names are not displayed in offense messages by default. Change behavior
25
+ # by overriding DisplayCopNames, or by giving the -D/--display-cop-names
26
+ # option.
27
+ DisplayCopNames: true
28
+ # Style guide URLs are not displayed in offense messages by default. Change
29
+ # behavior by overriding DisplayStyleGuide, or by giving the
30
+ # -S/--display-style-guide option.
31
+ DisplayStyleGuide: false
32
+ # Extra details are not displayed in offense messages by default. Change
33
+ # behavior by overriding ExtraDetails, or by giving the
34
+ # -E/--extra-details option.
35
+ ExtraDetails: false
36
+ NewCops: enable
37
+ # Additional cops that do not reference a style guide rule may be enabled by
38
+ # default. Change behavior by overriding StyleGuideCopsOnly, or by giving
39
+ # the --only-guide-cops option.
40
+ StyleGuideCopsOnly: false
41
+ # All cops except the ones in disabled.yml are enabled by default. Change
42
+ # this behavior by overriding DisabledByDefault. When DisabledByDefault is
43
+ # true, all cops in the default configuration are disabled, and and only cops
44
+ # in user configuration are enabled. This makes cops opt-in instead of
45
+ # opt-out. Note that when DisabledByDefault is true, cops in user
46
+ # configuration will be enabled even if they don't set the Enabled parameter.
47
+ DisabledByDefault: false
48
+ # Enables the result cache if true. Can be overridden by the --cache command
49
+ # line option.
50
+ UseCache: true
51
+ # Threshold for how many files can be stored in the result cache before some
52
+ # of the files are automatically removed.
53
+ MaxFilesInCache: 20000
54
+ # The cache will be stored in "rubocop_cache" under this directory. The name
55
+ # "/tmp" is special and will be converted to the system temporary directory,
56
+ # which is "/tmp" on Unix-like systems, but could be something else on other
57
+ # systems.
58
+ CacheRootDirectory: /tmp
59
+ # The default cache root directory is /tmp, which on most systems is
60
+ # writable by any system user. This means that it is possible for a
61
+ # malicious user to anticipate the location of Rubocop's cache directory,
62
+ # and create a symlink in its place that could cause Rubocop to overwrite
63
+ # unintended files, or read malicious input. If you are certain that your
64
+ # cache location is secure from this kind of attack, and wish to use a
65
+ # symlinked cache location, set this value to "true".
66
+ AllowSymlinksInCacheRootDirectory: true
67
+ # What MRI version of the Ruby interpreter is the inspected code intended to
68
+ # run on? (If there is more than one, set this to the lowest version.)
69
+ # If a value is specified for TargetRubyVersion then it is used.
70
+ # Else if .ruby-version exists and it contains an MRI version it is used.
71
+ # Otherwise we fallback to the oldest officially supported Ruby version (2.0).
72
+ TargetRubyVersion: 2.7
73
+
74
+ RSpec:
75
+ Patterns:
76
+ - "(?:^|/)spec/"
77
+ - "(?:^|/)test/"
78
+
79
+ # Indent private/protected/public as deep as method definitions
80
+ Layout/AccessModifierIndentation:
81
+ EnforcedStyle: indent
82
+ SupportedStyles:
83
+ - outdent
84
+ - indent
85
+ # By default, the indentation width from Style/IndentationWidth is used
86
+ # But it can be overridden by setting this parameter
87
+ IndentationWidth: ~
88
+
89
+ Style/Alias:
90
+ EnforcedStyle: prefer_alias
91
+ SupportedStyles:
92
+ - prefer_alias
93
+ - prefer_alias_method
94
+
95
+ # Align the elements of a hash literal if they span more than one line.
96
+ Layout/HashAlignment:
97
+ # Alignment of entries using hash rocket as separator. Valid values are:
98
+ #
99
+ # key - left alignment of keys
100
+ # "a" => 2
101
+ # "bb" => 3
102
+ # separator - alignment of hash rockets, keys are right aligned
103
+ # "a" => 2
104
+ # "bb" => 3
105
+ # table - left alignment of keys, hash rockets, and values
106
+ # "a" => 2
107
+ # "bb" => 3
108
+ EnforcedHashRocketStyle: key
109
+ # Alignment of entries using colon as separator. Valid values are:
110
+ #
111
+ # key - left alignment of keys
112
+ # a: 0
113
+ # bb: 1
114
+ # separator - alignment of colons, keys are right aligned
115
+ # a: 0
116
+ # bb: 1
117
+ # table - left alignment of keys and values
118
+ # a: 0
119
+ # bb: 1
120
+ EnforcedColonStyle: key
121
+ # Select whether hashes that are the last argument in a method call should be
122
+ # inspected? Valid values are:
123
+ #
124
+ # always_inspect - Inspect both implicit and explicit hashes.
125
+ # Registers an offense for:
126
+ # function(a: 1,
127
+ # b: 2)
128
+ # Registers an offense for:
129
+ # function({a: 1,
130
+ # b: 2})
131
+ # always_ignore - Ignore both implicit and explicit hashes.
132
+ # Accepts:
133
+ # function(a: 1,
134
+ # b: 2)
135
+ # Accepts:
136
+ # function({a: 1,
137
+ # b: 2})
138
+ # ignore_implicit - Ignore only implicit hashes.
139
+ # Accepts:
140
+ # function(a: 1,
141
+ # b: 2)
142
+ # Registers an offense for:
143
+ # function({a: 1,
144
+ # b: 2})
145
+ # ignore_explicit - Ignore only explicit hashes.
146
+ # Accepts:
147
+ # function({a: 1,
148
+ # b: 2})
149
+ # Registers an offense for:
150
+ # function(a: 1,
151
+ # b: 2)
152
+ EnforcedLastArgumentHashStyle: always_inspect
153
+ SupportedLastArgumentHashStyles:
154
+ - always_inspect
155
+ - always_ignore
156
+ - ignore_implicit
157
+ - ignore_explicit
158
+
159
+ Layout/ParameterAlignment:
160
+ # Alignment of parameters in multi-line method calls.
161
+ #
162
+ # The `with_first_parameter` style aligns the following lines along the same
163
+ # column as the first parameter.
164
+ #
165
+ # method_call(a,
166
+ # b)
167
+ #
168
+ # The `with_fixed_indentation` style aligns the following lines with one
169
+ # level of indentation relative to the start of the line with the method call.
170
+ #
171
+ # method_call(a,
172
+ # b)
173
+ EnforcedStyle: with_first_parameter
174
+ SupportedStyles:
175
+ - with_first_parameter
176
+ - with_fixed_indentation
177
+ # By default, the indentation width from Style/IndentationWidth is used
178
+ # But it can be overridden by setting this parameter
179
+ IndentationWidth: ~
180
+
181
+ Style/AndOr:
182
+ # Whether `and` and `or` are banned only in conditionals (conditionals)
183
+ # or completely (always).
184
+ EnforcedStyle: always
185
+ SupportedStyles:
186
+ - always
187
+ - conditionals
188
+
189
+ Style/AsciiComments:
190
+ Enabled: false
191
+
192
+ # Checks if usage of %() or %Q() matches configuration.
193
+ Style/BarePercentLiterals:
194
+ EnforcedStyle: bare_percent
195
+ SupportedStyles:
196
+ - percent_q
197
+ - bare_percent
198
+
199
+ Style/BlockDelimiters:
200
+ EnforcedStyle: line_count_based
201
+ SupportedStyles:
202
+ # The `line_count_based` style enforces braces around single line blocks and
203
+ # do..end around multi-line blocks.
204
+ - line_count_based
205
+ # The `semantic` style enforces braces around functional blocks, where the
206
+ # primary purpose of the block is to return a value and do..end for
207
+ # procedural blocks, where the primary purpose of the block is its
208
+ # side-effects.
209
+ #
210
+ # This looks at the usage of a block's method to determine its type (e.g. is
211
+ # the result of a `map` assigned to a variable or passed to another
212
+ # method) but exceptions are permitted in the `ProceduralMethods`,
213
+ # `FunctionalMethods` and `IgnoredMethods` sections below.
214
+ - semantic
215
+ # The `braces_for_chaining` style enforces braces around single line blocks
216
+ # and do..end around multi-line blocks, except for multi-line blocks whose
217
+ # return value is being chained with another method (in which case braces
218
+ # are enforced).
219
+ - braces_for_chaining
220
+ ProceduralMethods:
221
+ # Methods that are known to be procedural in nature but look functional from
222
+ # their usage, e.g.
223
+ #
224
+ # time = Benchmark.realtime do
225
+ # foo.bar
226
+ # end
227
+ #
228
+ # Here, the return value of the block is discarded but the return value of
229
+ # `Benchmark.realtime` is used.
230
+ - benchmark
231
+ - bm
232
+ - bmbm
233
+ - create
234
+ - each_with_object
235
+ - measure
236
+ - new
237
+ - realtime
238
+ - tap
239
+ - with_object
240
+ FunctionalMethods:
241
+ # Methods that are known to be functional in nature but look procedural from
242
+ # their usage, e.g.
243
+ #
244
+ # let(:foo) { Foo.new }
245
+ #
246
+ # Here, the return value of `Foo.new` is used to define a `foo` helper but
247
+ # doesn't appear to be used from the return value of `let`.
248
+ - let
249
+ - let!
250
+ - subject
251
+ - watch
252
+ IgnoredMethods:
253
+ # Methods that can be either procedural or functional and cannot be
254
+ # categorised from their usage alone, e.g.
255
+ #
256
+ # foo = lambda do |x|
257
+ # puts "Hello, #{x}"
258
+ # end
259
+ #
260
+ # foo = lambda do |x|
261
+ # x * 100
262
+ # end
263
+ #
264
+ # Here, it is impossible to tell from the return value of `lambda` whether
265
+ # the inner block's return value is significant.
266
+ - lambda
267
+ - proc
268
+ - it
269
+
270
+ Style/ExplicitBlockArgument:
271
+ Enabled: false
272
+
273
+ Style/HashEachMethods:
274
+ Enabled: false
275
+
276
+ Style/HashLikeCase:
277
+ MinBranchesCount: 5
278
+
279
+ # Indentation of `when`.
280
+ Layout/CaseIndentation:
281
+ EnforcedStyle: case
282
+ SupportedStyles:
283
+ - case
284
+ - end
285
+ IndentOneStep: false
286
+ # By default, the indentation width from Style/IndentationWidth is used
287
+ # But it can be overridden by setting this parameter
288
+ # This only matters if IndentOneStep is true
289
+ IndentationWidth: ~
290
+
291
+ Style/ClassAndModuleChildren:
292
+ Enabled: false
293
+ # Checks the style of children definitions at classes and modules.
294
+ #
295
+ # Basically there are two different styles:
296
+ #
297
+ # `nested` - have each child on a separate line
298
+ # class Foo
299
+ # class Bar
300
+ # end
301
+ # end
302
+ #
303
+ # `compact` - combine definitions as much as possible
304
+ # class Foo::Bar
305
+ # end
306
+ #
307
+ # The compact style is only forced, for classes / modules with one child.
308
+ EnforcedStyle: nested
309
+ SupportedStyles:
310
+ - nested
311
+ - compact
312
+
313
+ Style/ClassCheck:
314
+ EnforcedStyle: is_a?
315
+ SupportedStyles:
316
+ - is_a?
317
+ - kind_of?
318
+
319
+ # Align with the style guide.
320
+ Style/CollectionMethods:
321
+ # Mapping from undesired method to desired_method
322
+ # e.g. to use `detect` over `find`:
323
+ #
324
+ # CollectionMethods:
325
+ # PreferredMethods:
326
+ # find: detect
327
+ PreferredMethods:
328
+ collect: "map"
329
+ collect!: "map!"
330
+ inject: "reduce"
331
+ detect: "find"
332
+ find_all: "select"
333
+
334
+ # Use ` or %x around command literals.
335
+ Style/CommandLiteral:
336
+ EnforcedStyle: backticks
337
+ # backticks: Always use backticks.
338
+ # percent_x: Always use %x.
339
+ # mixed: Use backticks on single-line commands, and %x on multi-line commands.
340
+ SupportedStyles:
341
+ - backticks
342
+ - percent_x
343
+ - mixed
344
+ # If false, the cop will always recommend using %x if one or more backticks
345
+ # are found in the command string.
346
+ AllowInnerBackticks: false
347
+
348
+ # Checks formatting of special comments
349
+ Style/CommentAnnotation:
350
+ Keywords:
351
+ - TODO
352
+ - FIXME
353
+ - OPTIMIZE
354
+ - HACK
355
+ - REVIEW
356
+
357
+ Style/ConditionalAssignment:
358
+ EnforcedStyle: assign_to_condition
359
+ SupportedStyles:
360
+ - assign_to_condition
361
+ - assign_inside_condition
362
+ # When configured to `assign_to_condition`, `SingleLineConditionsOnly`
363
+ # will only register an offense when all branches of a condition are
364
+ # a single line.
365
+ # When configured to `assign_inside_condition`, `SingleLineConditionsOnly`
366
+ # will only register an offense for assignment to a condition that has
367
+ # at least one multiline branch.
368
+ SingleLineConditionsOnly: true
369
+
370
+ # Checks that you have put a copyright in a comment before any code.
371
+ #
372
+ # You can override the default Notice in your .rubocop.yml file.
373
+ #
374
+ # In order to use autocorrect, you must supply a value for the
375
+ # AutocorrectNotice key that matches the regexp Notice. A blank
376
+ # AutocorrectNotice will cause an error during autocorrect.
377
+ #
378
+ # Autocorrect will add a copyright notice in a comment at the top
379
+ # of the file immediately after any shebang or encoding comments.
380
+ #
381
+ # Example rubocop.yml:
382
+ #
383
+ # Style/Copyright:
384
+ # Enabled: true
385
+ # Notice: 'Copyright (\(c\) )?2015 Yahoo! Inc'
386
+ # AutocorrectNotice: "# Copyright (c) 2015 Yahoo! Inc."
387
+ #
388
+ Style/Copyright:
389
+ Notice: '^Copyright (\(c\) )?2[0-9]{3} .+'
390
+ AutocorrectNotice: ""
391
+
392
+ Style/DocumentationMethod:
393
+ RequireForNonPublicMethods: false
394
+
395
+ # Multi-line method chaining should be done with leading dots.
396
+ Layout/DotPosition:
397
+ EnforcedStyle: leading
398
+ SupportedStyles:
399
+ - leading
400
+ - trailing
401
+
402
+ # Warn on empty else statements
403
+ # empty - warn only on empty else
404
+ # nil - warn on else with nil in it
405
+ # both - warn on empty else and else with nil in it
406
+ Style/EmptyElse:
407
+ EnforcedStyle: both
408
+ SupportedStyles:
409
+ - empty
410
+ - nil
411
+ - both
412
+
413
+ # Use empty lines between defs.
414
+ Layout/EmptyLineBetweenDefs:
415
+ # If true, this parameter means that single line method definitions don't
416
+ # need an empty line between them.
417
+ AllowAdjacentOneLineDefs: false
418
+
419
+ Layout/EmptyLinesAroundBlockBody:
420
+ EnforcedStyle: no_empty_lines
421
+ SupportedStyles:
422
+ - empty_lines
423
+ - no_empty_lines
424
+
425
+ Layout/EmptyLinesAroundClassBody:
426
+ EnforcedStyle: no_empty_lines
427
+ SupportedStyles:
428
+ - empty_lines
429
+ - no_empty_lines
430
+
431
+ Layout/EmptyLinesAroundModuleBody:
432
+ EnforcedStyle: no_empty_lines
433
+ SupportedStyles:
434
+ - empty_lines
435
+ - no_empty_lines
436
+
437
+ # Checks whether the source file has a utf-8 encoding comment or not
438
+ # AutoCorrectEncodingComment must match the regex
439
+ # /#.*coding\s?[:=]\s?(?:UTF|utf)-8/
440
+ Style/Encoding:
441
+ Enabled: true
442
+
443
+ Layout/ExtraSpacing:
444
+ # When true, allows most uses of extra spacing if the intent is to align
445
+ # things with the previous or next line, not counting empty lines or comment
446
+ # lines.
447
+ AllowForAlignment: false
448
+ # When true, forces the alignment of = in assignments on consecutive lines.
449
+ ForceEqualSignAlignment: false
450
+
451
+ Naming/FileName:
452
+ Exclude:
453
+ - "**/Gemfile"
454
+ - "**/Rakefile"
455
+ - "**/*.gemspec"
456
+ # When true, requires that each source file should define a class or module
457
+ # with a name which matches the file name (converted to ... case).
458
+ # It further expects it to be nested inside modules which match the names
459
+ # of subdirectories in its path.
460
+ ExpectMatchingDefinition: false
461
+ # If non-nil, expect all source file names to match the following regex.
462
+ # Only the file name itself is matched, not the entire file path.
463
+ # Use anchors as necessary if you want to match the entire name rather than
464
+ # just a part of it.
465
+ Regex: ~
466
+ # With `IgnoreExecutableScripts` set to `true`, this cop does not
467
+ # report offending filenames for executable scripts (i.e. source
468
+ # files with a shebang in the first line).
469
+ IgnoreExecutableScripts: true
470
+
471
+ Layout/FirstArgumentIndentation:
472
+ EnforcedStyle: special_for_inner_method_call_in_parentheses
473
+ SupportedStyles:
474
+ # The first parameter should always be indented one step more than the
475
+ # preceding line.
476
+ - consistent
477
+ # The first parameter should normally be indented one step more than the
478
+ # preceding line, but if it's a parameter for a method call that is itself
479
+ # a parameter in a method call, then the inner parameter should be indented
480
+ # relative to the inner method.
481
+ - special_for_inner_method_call
482
+ # Same as special_for_inner_method_call except that the special rule only
483
+ # applies if the outer method call encloses its arguments in parentheses.
484
+ - special_for_inner_method_call_in_parentheses
485
+ # By default, the indentation width from Style/IndentationWidth is used
486
+ # But it can be overridden by setting this parameter
487
+ IndentationWidth: ~
488
+
489
+ # Checks use of for or each in multiline loops.
490
+ Style/For:
491
+ EnforcedStyle: each
492
+ SupportedStyles:
493
+ - for
494
+ - each
495
+
496
+ # Enforce the method used for string formatting.
497
+ Style/FormatString:
498
+ EnforcedStyle: format
499
+ SupportedStyles:
500
+ - format
501
+ - sprintf
502
+ - percent
503
+
504
+ Style/FormatStringToken:
505
+ EnforcedStyle: template
506
+
507
+ Style/FrozenStringLiteralComment:
508
+ EnforcedStyle: always
509
+ SupportedStyles:
510
+ - never
511
+ # `always` will always add the frozen string literal comment to a file
512
+ # regardless of the Ruby version or if `freeze` or `<<` are called on a
513
+ # string literal. If you run code against multiple versions of Ruby, it is
514
+ # possible that this will create errors in Ruby 2.3.0+.
515
+ - always
516
+
517
+ # Built-in global variables are allowed by default.
518
+ Style/GlobalVars:
519
+ AllowedVariables: []
520
+
521
+ # `MinBodyLength` defines the number of lines of the a body of an if / unless
522
+ # needs to have to trigger this cop
523
+ Style/GuardClause:
524
+ MinBodyLength: 6
525
+
526
+ Style/HashSyntax:
527
+ EnforcedStyle: ruby19
528
+ SupportedStyles:
529
+ # checks for 1.9 syntax (e.g. {a: 1}) for all symbol keys
530
+ - ruby19
531
+ # checks for hash rocket syntax for all hashes
532
+ - hash_rockets
533
+ # forbids mixed key syntaxes (e.g. {a: 1, :b => 2})
534
+ - no_mixed_keys
535
+ # enforces both ruby19 and no_mixed_keys styles
536
+ - ruby19_no_mixed_keys
537
+ # Force hashes that have a symbol value to use hash rockets
538
+ UseHashRocketsWithSymbolValues: false
539
+ # Do not suggest { a?: 1 } over { :a? => 1 } in ruby19 style
540
+ PreferHashRocketsForNonAlnumEndingSymbols: false
541
+
542
+ Layout/IndentationConsistency:
543
+ # The difference between `rails` and `normal` is that the `rails` style
544
+ # prescribes that in classes and modules the `protected` and `private`
545
+ # modifier keywords shall be indented the same as public methods and that
546
+ # protected and private members shall be indented one step more than the
547
+ # modifiers. Other than that, both styles mean that entities on the same
548
+ # logical depth shall have the same indentation.
549
+ EnforcedStyle: normal
550
+ SupportedStyles:
551
+ - normal
552
+ - rails
553
+
554
+ Layout/IndentationWidth:
555
+ # Number of spaces for each indentation level.
556
+ Width: 2
557
+
558
+ # Checks the indentation of the first element in an array literal.
559
+ Layout/FirstArrayElementIndentation:
560
+ # The value `special_inside_parentheses` means that array literals with
561
+ # brackets that have their opening bracket on the same line as a surrounding
562
+ # opening round parenthesis, shall have their first element indented relative
563
+ # to the first position inside the parenthesis.
564
+ #
565
+ # The value `consistent` means that the indentation of the first element shall
566
+ # always be relative to the first position of the line where the opening
567
+ # bracket is.
568
+ #
569
+ # The value `align_brackets` means that the indentation of the first element
570
+ # shall always be relative to the position of the opening bracket.
571
+ EnforcedStyle: special_inside_parentheses
572
+ SupportedStyles:
573
+ - special_inside_parentheses
574
+ - consistent
575
+ - align_brackets
576
+ # By default, the indentation width from Style/IndentationWidth is used
577
+ # But it can be overridden by setting this parameter
578
+ IndentationWidth: ~
579
+
580
+ # Checks the indentation of assignment RHS, when on a different line from LHS
581
+ Layout/AssignmentIndentation:
582
+ # By default, the indentation width from Style/IndentationWidth is used
583
+ # But it can be overridden by setting this parameter
584
+ IndentationWidth: ~
585
+
586
+ # Checks the indentation of the first key in a hash literal.
587
+ Layout/FirstHashElementIndentation:
588
+ # The value `special_inside_parentheses` means that hash literals with braces
589
+ # that have their opening brace on the same line as a surrounding opening
590
+ # round parenthesis, shall have their first key indented relative to the
591
+ # first position inside the parenthesis.
592
+ #
593
+ # The value `consistent` means that the indentation of the first key shall
594
+ # always be relative to the first position of the line where the opening
595
+ # brace is.
596
+ #
597
+ # The value `align_braces` means that the indentation of the first key shall
598
+ # always be relative to the position of the opening brace.
599
+ EnforcedStyle: special_inside_parentheses
600
+ SupportedStyles:
601
+ - special_inside_parentheses
602
+ - consistent
603
+ - align_braces
604
+ # By default, the indentation width from Style/IndentationWidth is used
605
+ # But it can be overridden by setting this parameter
606
+ IndentationWidth: ~
607
+
608
+ Style/Lambda:
609
+ EnforcedStyle: line_count_dependent
610
+ SupportedStyles:
611
+ - line_count_dependent
612
+ - lambda
613
+ - literal
614
+ Exclude:
615
+ - "**/types/**/*"
616
+ - "**/*_interface.rb"
617
+
618
+ Style/LambdaCall:
619
+ EnforcedStyle: call
620
+ SupportedStyles:
621
+ - call
622
+ - braces
623
+
624
+ Style/Next:
625
+ # With `always` all conditions at the end of an iteration needs to be
626
+ # replaced by next - with `skip_modifier_ifs` the modifier if like this one
627
+ # are ignored: [1, 2].each { |a| return "yes" if a == 1 }
628
+ EnforcedStyle: skip_modifier_ifs
629
+ # `MinBodyLength` defines the number of lines of the a body of an if / unless
630
+ # needs to have to trigger this cop
631
+ MinBodyLength: 3
632
+ SupportedStyles:
633
+ - skip_modifier_ifs
634
+ - always
635
+
636
+ Style/NonNilCheck:
637
+ # With `IncludeSemanticChanges` set to `true`, this cop reports offenses for
638
+ # `!x.nil?` and autocorrects that and `x != nil` to solely `x`, which is
639
+ # **usually** OK, but might change behavior.
640
+ #
641
+ # With `IncludeSemanticChanges` set to `false`, this cop does not report
642
+ # offenses for `!x.nil?` and does no changes that might change behavior.
643
+ IncludeSemanticChanges: false
644
+
645
+ Style/NumericPredicate:
646
+ EnforcedStyle: predicate
647
+ SupportedStyles:
648
+ - predicate
649
+ - comparison
650
+
651
+ Style/MethodDefParentheses:
652
+ EnforcedStyle: require_parentheses
653
+ SupportedStyles:
654
+ - require_parentheses
655
+ - require_no_parentheses
656
+ - require_no_parentheses_except_multiline
657
+
658
+ Naming/MethodName:
659
+ EnforcedStyle: snake_case
660
+ SupportedStyles:
661
+ - snake_case
662
+ - camelCase
663
+
664
+ Style/ModuleFunction:
665
+ EnforcedStyle: module_function
666
+ SupportedStyles:
667
+ - module_function
668
+ - extend_self
669
+
670
+ Layout/MultilineArrayBraceLayout:
671
+ EnforcedStyle: symmetrical
672
+ SupportedStyles:
673
+ # symmetrical: closing brace is positioned in same way as opening brace
674
+ # new_line: closing brace is always on a new line
675
+ # same_line: closing brace is always on the same line as last element
676
+ - symmetrical
677
+ - new_line
678
+ - same_line
679
+
680
+ Layout/MultilineAssignmentLayout:
681
+ # The types of assignments which are subject to this rule.
682
+ SupportedTypes:
683
+ - block
684
+ - case
685
+ - class
686
+ - if
687
+ - kwbegin
688
+ - module
689
+ EnforcedStyle: new_line
690
+ SupportedStyles:
691
+ # Ensures that the assignment operator and the rhs are on the same line for
692
+ # the set of supported types.
693
+ - same_line
694
+ # Ensures that the assignment operator and the rhs are on separate lines
695
+ # for the set of supported types.
696
+ - new_line
697
+
698
+ Layout/MultilineHashBraceLayout:
699
+ EnforcedStyle: symmetrical
700
+ SupportedStyles:
701
+ # symmetrical: closing brace is positioned in same way as opening brace
702
+ # new_line: closing brace is always on a new line
703
+ # same_line: closing brace is always on same line as last element
704
+ - symmetrical
705
+ - new_line
706
+ - same_line
707
+
708
+ Layout/MultilineMethodCallBraceLayout:
709
+ EnforcedStyle: symmetrical
710
+ SupportedStyles:
711
+ # symmetrical: closing brace is positioned in same way as opening brace
712
+ # new_line: closing brace is always on a new line
713
+ # same_line: closing brace is always on the same line as last argument
714
+ - symmetrical
715
+ - new_line
716
+ - same_line
717
+
718
+ Layout/MultilineMethodCallIndentation:
719
+ EnforcedStyle: aligned
720
+ SupportedStyles:
721
+ - aligned
722
+ - indented
723
+ - indented_relative_to_receiver
724
+ # By default, the indentation width from Style/IndentationWidth is used
725
+ # But it can be overridden by setting this parameter
726
+ IndentationWidth: ~
727
+
728
+ Layout/MultilineMethodDefinitionBraceLayout:
729
+ EnforcedStyle: symmetrical
730
+ SupportedStyles:
731
+ # symmetrical: closing brace is positioned in same way as opening brace
732
+ # new_line: closing brace is always on a new line
733
+ # same_line: closing brace is always on the same line as last parameter
734
+ - symmetrical
735
+ - new_line
736
+ - same_line
737
+
738
+ Layout/MultilineOperationIndentation:
739
+ EnforcedStyle: aligned
740
+ SupportedStyles:
741
+ - aligned
742
+ - indented
743
+ # By default, the indentation width from Style/IndentationWidth is used
744
+ # But it can be overridden by setting this parameter
745
+ IndentationWidth: ~
746
+
747
+ Style/NumericLiterals:
748
+ MinDigits: 5
749
+
750
+ Style/NumericLiteralPrefix:
751
+ EnforcedOctalStyle: zero_with_o
752
+ SupportedOctalStyles:
753
+ - zero_with_o
754
+ - zero_only
755
+
756
+ Style/OptionHash:
757
+ # A list of parameter names that will be flagged by this cop.
758
+ SuspiciousParamNames:
759
+ - options
760
+ - opts
761
+ - args
762
+ - params
763
+ - parameters
764
+
765
+ # Allow safe assignment in conditions.
766
+ Style/ParenthesesAroundCondition:
767
+ AllowSafeAssignment: true
768
+
769
+ Style/PercentLiteralDelimiters:
770
+ PreferredDelimiters:
771
+ "%": ()
772
+ "%i": ()
773
+ "%q": ()
774
+ "%Q": ()
775
+ "%r": "{}"
776
+ "%s": ()
777
+ "%w": ()
778
+ "%W": ()
779
+ "%x": ()
780
+
781
+ Style/PercentQLiterals:
782
+ EnforcedStyle: lower_case_q
783
+ SupportedStyles:
784
+ - lower_case_q # Use %q when possible, %Q when necessary
785
+ - upper_case_q # Always use %Q
786
+
787
+ Style/SlicingWithRange:
788
+ Enabled: false
789
+
790
+ Naming/PredicateName:
791
+ # Predicate name prefixes.
792
+ NamePrefix:
793
+ - is_
794
+ - has_
795
+ - have_
796
+ # Predicate name prefixes that should be removed.
797
+ ForbiddenPrefixes:
798
+ - is_
799
+ - have_
800
+ # Predicate names which, despite having a blacklisted prefix, or no ?,
801
+ # should still be accepted
802
+ AllowedMethods:
803
+ - is_a?
804
+ # Exclude Rspec specs because there is a strong convetion to write spec
805
+ # helpers in the form of `have_something` or `be_something`.
806
+ Exclude:
807
+ - "**/spec/**/*"
808
+ - "**/test/**/*"
809
+
810
+ Style/PreferredHashMethods:
811
+ Enabled: true
812
+ EnforcedStyle: verbose
813
+
814
+ Style/DateTime:
815
+ Enabled: true
816
+
817
+ Style/Documentation:
818
+ Enabled: false
819
+
820
+ Style/RaiseArgs:
821
+ EnforcedStyle: exploded
822
+ SupportedStyles:
823
+ - compact # raise Exception.new(msg)
824
+ - exploded # raise Exception, msg
825
+
826
+ Style/RedundantReturn:
827
+ # When true allows code like `return x, y`.
828
+ AllowMultipleReturnValues: false
829
+
830
+ # Use / or %r around regular expressions.
831
+ Style/RegexpLiteral:
832
+ EnforcedStyle: slashes
833
+ # slashes: Always use slashes.
834
+ # percent_r: Always use %r.
835
+ # mixed: Use slashes on single-line regexes, and %r on multi-line regexes.
836
+ SupportedStyles:
837
+ - slashes
838
+ - percent_r
839
+ - mixed
840
+ # If false, the cop will always recommend using %r if one or more slashes
841
+ # are found in the regexp string.
842
+ AllowInnerSlashes: false
843
+
844
+ Style/SafeNavigation:
845
+ Enabled: false
846
+
847
+ Style/Semicolon:
848
+ # Allow ; to separate several expressions on the same line.
849
+ AllowAsExpressionSeparator: false
850
+
851
+ Style/SignalException:
852
+ EnforcedStyle: only_raise
853
+ SupportedStyles:
854
+ - only_raise
855
+ - only_fail
856
+ - semantic
857
+
858
+ Style/SingleLineBlockParams:
859
+ Methods:
860
+ - reduce:
861
+ - a
862
+ - e
863
+ - inject:
864
+ - a
865
+ - e
866
+
867
+ Style/SingleLineMethods:
868
+ AllowIfMethodIsEmpty: true
869
+
870
+ Layout/SpaceBeforeFirstArg:
871
+ # When true, allows most uses of extra spacing if the intent is to align
872
+ # things with the previous or next line, not counting empty lines or comment
873
+ # lines.
874
+ AllowForAlignment: true
875
+
876
+ Style/SpecialGlobalVars:
877
+ EnforcedStyle: use_english_names
878
+ SupportedStyles:
879
+ - use_perl_names
880
+ - use_english_names
881
+
882
+ Style/StabbyLambdaParentheses:
883
+ EnforcedStyle: require_parentheses
884
+ SupportedStyles:
885
+ - require_parentheses
886
+ - require_no_parentheses
887
+
888
+ Style/StringLiterals:
889
+ EnforcedStyle: double_quotes
890
+ SupportedStyles:
891
+ - single_quotes
892
+ - double_quotes
893
+ # If true, strings which span multiple lines using \ for continuation must
894
+ # use the same type of quotes on each line.
895
+ ConsistentQuotesInMultiline: false
896
+
897
+ Style/StringLiteralsInInterpolation:
898
+ EnforcedStyle: double_quotes
899
+ SupportedStyles:
900
+ - single_quotes
901
+ - double_quotes
902
+
903
+ Style/StringMethods:
904
+ # Mapping from undesired method to desired_method
905
+ # e.g. to use `to_sym` over `intern`:
906
+ #
907
+ # StringMethods:
908
+ # PreferredMethods:
909
+ # intern: to_sym
910
+ PreferredMethods:
911
+ intern: to_sym
912
+
913
+ Layout/SpaceAroundBlockParameters:
914
+ EnforcedStyleInsidePipes: no_space
915
+
916
+ Layout/SpaceAroundEqualsInParameterDefault:
917
+ EnforcedStyle: space
918
+ SupportedStyles:
919
+ - space
920
+ - no_space
921
+
922
+ Layout/SpaceAroundOperators:
923
+ # When true, allows most uses of extra spacing if the intent is to align
924
+ # with an operator on the previous or next line, not counting empty lines
925
+ # or comment lines.
926
+ AllowForAlignment: true
927
+
928
+ Layout/SpaceBeforeBlockBraces:
929
+ EnforcedStyle: space
930
+ SupportedStyles:
931
+ - space
932
+ - no_space
933
+
934
+ Layout/SpaceInsideBlockBraces:
935
+ EnforcedStyle: space
936
+ SupportedStyles:
937
+ - space
938
+ - no_space
939
+ # Valid values are: space, no_space
940
+ EnforcedStyleForEmptyBraces: no_space
941
+ # Space between { and |. Overrides EnforcedStyle if there is a conflict.
942
+ SpaceBeforeBlockParameters: true
943
+
944
+ Layout/SpaceInsideHashLiteralBraces:
945
+ EnforcedStyle: space
946
+ EnforcedStyleForEmptyBraces: no_space
947
+ SupportedStyles:
948
+ - space
949
+ - no_space
950
+ # "compact" normally requires a space inside hash braces, with the exception
951
+ # that successive left braces or right braces are collapsed together
952
+ - compact
953
+
954
+ Layout/SpaceInsideStringInterpolation:
955
+ EnforcedStyle: no_space
956
+ SupportedStyles:
957
+ - space
958
+ - no_space
959
+
960
+ Style/AccessModifierDeclarations:
961
+ Enabled: false
962
+
963
+ Style/SymbolArray:
964
+ EnforcedStyle: brackets
965
+ SupportedStyles:
966
+ - percent
967
+ - brackets
968
+
969
+ Style/SymbolProc:
970
+ # A list of method names to be ignored by the check.
971
+ # The names should be fairly unique, otherwise you'll end up ignoring lots of code.
972
+ IgnoredMethods:
973
+ - respond_to
974
+ - define_method
975
+
976
+ Style/TernaryParentheses:
977
+ EnforcedStyle: require_no_parentheses
978
+ SupportedStyles:
979
+ - require_parentheses
980
+ - require_no_parentheses
981
+ AllowSafeAssignment: true
982
+
983
+ Layout/TrailingEmptyLines:
984
+ EnforcedStyle: final_newline
985
+ SupportedStyles:
986
+ - final_newline
987
+ - final_blank_line
988
+
989
+ Style/TrailingCommaInArguments:
990
+ # If `comma`, the cop requires a comma after the last argument, but only for
991
+ # parenthesized method calls where each argument is on its own line.
992
+ # If `consistent_comma`, the cop requires a comma after the last argument,
993
+ # for all parenthesized method calls with arguments.
994
+ EnforcedStyleForMultiline: no_comma
995
+
996
+ Style/TrailingCommaInArrayLiteral:
997
+ # If `comma`, the cop requires a comma after the last item in an array or
998
+ # hash, but only when each item is on its own line.
999
+ # If `consistent_comma`, the cop requires a comma after the last item of all
1000
+ # non-empty array and hash literals.
1001
+ EnforcedStyleForMultiline: no_comma
1002
+
1003
+ Style/TrailingCommaInHashLiteral:
1004
+ # If `comma`, the cop requires a comma after the last item in an array or
1005
+ # hash, but only when each item is on its own line.
1006
+ # If `consistent_comma`, the cop requires a comma after the last item of all
1007
+ # non-empty array and hash literals.
1008
+ EnforcedStyleForMultiline: no_comma
1009
+
1010
+ # TrivialAccessors requires exact name matches and doesn't allow
1011
+ # predicated methods by default.
1012
+ Style/TrivialAccessors:
1013
+ # When set to false the cop will suggest the use of accessor methods
1014
+ # in situations like:
1015
+ #
1016
+ # def name
1017
+ # @other_name
1018
+ # end
1019
+ #
1020
+ # This way you can uncover "hidden" attributes in your code.
1021
+ ExactNameMatch: true
1022
+ AllowPredicates: true
1023
+ # Allows trivial writers that don't end in an equal sign. e.g.
1024
+ #
1025
+ # def on_exception(action)
1026
+ # @on_exception=action
1027
+ # end
1028
+ # on_exception :restart
1029
+ #
1030
+ # Commonly used in DSLs
1031
+ AllowDSLWriters: false
1032
+ IgnoreClassMethods: false
1033
+ AllowedMethods:
1034
+ - to_ary
1035
+ - to_a
1036
+ - to_c
1037
+ - to_enum
1038
+ - to_h
1039
+ - to_hash
1040
+ - to_i
1041
+ - to_int
1042
+ - to_io
1043
+ - to_open
1044
+ - to_path
1045
+ - to_proc
1046
+ - to_r
1047
+ - to_regexp
1048
+ - to_str
1049
+ - to_s
1050
+ - to_sym
1051
+
1052
+ Naming/VariableName:
1053
+ EnforcedStyle: snake_case
1054
+ SupportedStyles:
1055
+ - snake_case
1056
+ - camelCase
1057
+
1058
+ Naming/VariableNumber:
1059
+ EnforcedStyle: normalcase
1060
+ SupportedStyles:
1061
+ - snake_case
1062
+ - normalcase
1063
+ - non_integer
1064
+
1065
+ # WordArray enforces how array literals of word-like strings should be expressed.
1066
+ Style/WordArray:
1067
+ EnforcedStyle: percent
1068
+ SupportedStyles:
1069
+ # percent style: %w(word1 word2)
1070
+ - percent
1071
+ # bracket style: ["word1", "word2"]
1072
+ - brackets
1073
+ # The MinSize option causes the WordArray rule to be ignored for arrays
1074
+ # smaller than a certain size. The rule is only applied to arrays
1075
+ # whose element count is greater than or equal to MinSize.
1076
+ MinSize: 2
1077
+ # The regular expression WordRegex decides what is considered a word.
1078
+ WordRegex: !ruby/regexp '/\A[\p{Word}\n\t]+\z/'
1079
+
1080
+ ##################### Metrics ##################################
1081
+
1082
+ Metrics/AbcSize:
1083
+ # The ABC size is a calculated magnitude, so this number can be an Integer or
1084
+ # a Float.
1085
+ Max: 15
1086
+ Enabled: false
1087
+
1088
+ Metrics/BlockNesting:
1089
+ Max: 3
1090
+
1091
+ Metrics/ClassLength:
1092
+ CountComments: false # count full line comments?
1093
+ Max: 100
1094
+ Enabled: false
1095
+
1096
+ Metrics/ModuleLength:
1097
+ CountComments: false # count full line comments?
1098
+ Max: 100
1099
+ Enabled: false
1100
+
1101
+ # Avoid complex methods.
1102
+ Metrics/CyclomaticComplexity:
1103
+ Max: 9
1104
+ Exclude:
1105
+ - "bin/bundle"
1106
+ - "decidim-admin/app/queries/decidim/admin/newsletter_recipients.rb"
1107
+ - "**/*/dummy_authorization_handler.rb"
1108
+ - "**/*/permissions.rb"
1109
+
1110
+ Metrics/MethodLength:
1111
+ CountComments: false # count full line comments?
1112
+ Max: 15
1113
+ Enabled: false
1114
+
1115
+ Metrics/ParameterLists:
1116
+ Max: 5
1117
+ CountKeywordArgs: true
1118
+ Exclude:
1119
+ - "decidim-core/lib/decidim/filter_form_builder.rb"
1120
+
1121
+ Metrics/PerceivedComplexity:
1122
+ Max: 10
1123
+ Exclude:
1124
+ - "decidim-admin/app/queries/decidim/admin/newsletter_recipients.rb"
1125
+ - "**/*/dummy_authorization_handler.rb"
1126
+ - "**/*/permissions.rb"
1127
+
1128
+ ##################### Lint ##################################
1129
+
1130
+ Lint/AmbiguousBlockAssociation:
1131
+ Enabled: true
1132
+ Exclude:
1133
+ - "**/abilities/**/*"
1134
+
1135
+ # Allow safe assignment in conditions.
1136
+ Lint/AssignmentInCondition:
1137
+ AllowSafeAssignment: true
1138
+
1139
+ Lint/ConstantDefinitionInBlock:
1140
+ Enabled: false
1141
+
1142
+ # Call super to initialize state of the parent class.
1143
+ Lint/MissingSuper:
1144
+ Enabled: false
1145
+
1146
+ # checks whether the end keywords are aligned properly for `do` `end` blocks.
1147
+ Layout/BlockAlignment:
1148
+ # The value `start_of_block` means that the `end` should be aligned with line
1149
+ # where the `do` keyword appears.
1150
+ # The value `start_of_line` means it should be aligned with the whole
1151
+ # expression's starting line.
1152
+ # The value `either` means both are allowed.
1153
+ EnforcedStyleAlignWith: either
1154
+
1155
+ # Align ends correctly.
1156
+ Layout/EndAlignment:
1157
+ # The value `keyword` means that `end` should be aligned with the matching
1158
+ # keyword (if, while, etc.).
1159
+ # The value `variable` means that in assignments, `end` should be aligned
1160
+ # with the start of the variable on the left hand side of `=`. In all other
1161
+ # situations, `end` should still be aligned with the keyword.
1162
+ # The value `start_of_line` means that `end` should be aligned with the start
1163
+ # of the line which the matching keyword appears on.
1164
+ EnforcedStyleAlignWith: keyword
1165
+ AutoCorrect: false
1166
+
1167
+ Layout/DefEndAlignment:
1168
+ # The value `def` means that `end` should be aligned with the def keyword.
1169
+ # The value `start_of_line` means that `end` should be aligned with method
1170
+ # calls like `private`, `public`, etc, if present in front of the `def`
1171
+ # keyword on the same line.
1172
+ EnforcedStyleAlignWith: start_of_line
1173
+ AutoCorrect: false
1174
+
1175
+ Lint/InheritException:
1176
+ # The default base class in favour of `Exception`.
1177
+ EnforcedStyle: runtime_error
1178
+ SupportedStyles:
1179
+ - runtime_error
1180
+ - standard_error
1181
+
1182
+ Layout/LineLength:
1183
+ Max: 180
1184
+ # To make it possible to copy or click on URIs in the code, we allow lines
1185
+ # containing a URI to be longer than Max.
1186
+ AllowHeredoc: true
1187
+ AllowURI: true
1188
+ URISchemes:
1189
+ - http
1190
+ - https
1191
+ Exclude:
1192
+ - "**/spec/**/*"
1193
+
1194
+ # Checks for unused block arguments
1195
+ Lint/UnusedBlockArgument:
1196
+ IgnoreEmptyBlocks: true
1197
+ AllowUnusedKeywordArguments: false
1198
+
1199
+ # Checks for unused method arguments.
1200
+ Lint/UnusedMethodArgument:
1201
+ AllowUnusedKeywordArguments: false
1202
+ IgnoreEmptyMethods: true
1203
+
1204
+ ##################### Performance ############################
1205
+
1206
+ Metrics/BlockLength:
1207
+ Enabled: false
1208
+
1209
+ RSpec/BeforeAfterAll:
1210
+ Enabled: true
1211
+
1212
+ RSpec/ContextWording:
1213
+ Enabled: true
1214
+ Prefixes:
1215
+ - when
1216
+ - with
1217
+ - without
1218
+ - and
1219
+
1220
+ RSpec/DescribeClass:
1221
+ Exclude:
1222
+ - spec/gemfiles_spec.rb
1223
+ - spec/js_bundles_spec.rb
1224
+ - spec/i18n_spec.rb
1225
+ - "**/*/spec/**/*_badge_spec.rb"
1226
+ - decidim-core/spec/lib/global_engines_spec.rb
1227
+ - "**/tasks/**/*"
1228
+
1229
+ RSpec/EmptyExampleGroup:
1230
+ Exclude:
1231
+ - decidim-core/spec/lib/participatory_space_manifest_spec.rb
1232
+
1233
+ RSpec/ExampleLength:
1234
+ Max: 49
1235
+
1236
+ RSpec/ExpectInHook:
1237
+ Enabled: false
1238
+
1239
+ RSpec/IteratedExpectation:
1240
+ Enabled: true
1241
+
1242
+ RSpec/LetSetup:
1243
+ Enabled: false
1244
+
1245
+ RSpec/MessageSpies:
1246
+ Enabled: false
1247
+
1248
+ RSpec/MultipleExpectations:
1249
+ Enabled: false
1250
+
1251
+ RSpec/MultipleMemoizedHelpers:
1252
+ Max: 35
1253
+
1254
+ RSpec/NestedGroups:
1255
+ Max: 7
1256
+
1257
+ RSpec/NamedSubject:
1258
+ Enabled: false
1259
+
1260
+ RSpec/RepeatedExampleGroupDescription:
1261
+ Enabled: false
1262
+
1263
+ RSpec/RepeatedExampleGroupBody:
1264
+ Enabled: false
1265
+ RSpec/VerifiedDoubles:
1266
+ Enabled: false
1267
+
1268
+ RSpec/LeakyConstantDeclaration:
1269
+ Enabled: false
1270
+
1271
+ RSpec/DescribedClass:
1272
+ Enabled: false
1273
+
1274
+ # This is the default configuration file.
1275
+
1276
+ Faker/DeprecatedArguments:
1277
+ Description: 'Checks that Faker arguments style is based on Faker 2.'
1278
+ Enabled: true
1279
+ VersionAdded: '0.1'
1280
+ Reference: 'https://github.com/faker-ruby/faker/blob/master/CHANGELOG.md#v20-2019-31-07'
1281
+ ArgumentKeywords:
1282
+ #
1283
+ # FakerClassName:
1284
+ # method_name:
1285
+ # - keyword_name_for_first_argument
1286
+ # - keyword_name_for_second_argument
1287
+ # - keyword_name_for_third_argument
1288
+ #
1289
+ Faker::Dune:
1290
+ quote:
1291
+ - character
1292
+ saying:
1293
+ - source
1294
+ Faker::Books::Lovecraft:
1295
+ fhtagn:
1296
+ - number
1297
+ sentence:
1298
+ - word_count
1299
+ - random_words_to_add
1300
+ words:
1301
+ - number
1302
+ - spaces_allowed
1303
+ sentences:
1304
+ - number
1305
+ paragraph:
1306
+ - sentence_count
1307
+ - random_sentences_to_add
1308
+ paragraphs:
1309
+ - number
1310
+ paragraph_by_chars:
1311
+ - characters
1312
+ Faker::Address:
1313
+ city:
1314
+ - options
1315
+ street_address:
1316
+ - include_secondary
1317
+ zip_code:
1318
+ - state_abbreviation
1319
+ country_by_code:
1320
+ - code
1321
+ country_name_to_code:
1322
+ - name
1323
+ Faker::Alphanumeric:
1324
+ alpha:
1325
+ - number
1326
+ alphanumeric:
1327
+ - number
1328
+ Faker::App:
1329
+ semantic_version:
1330
+ - major
1331
+ - minor
1332
+ - patch
1333
+ Faker::Avatar:
1334
+ image:
1335
+ - slug
1336
+ - size
1337
+ - format
1338
+ - set
1339
+ - bgset
1340
+ Faker::Bank:
1341
+ account_number:
1342
+ - digits
1343
+ iban:
1344
+ - country_code
1345
+ Faker::Boolean:
1346
+ boolean:
1347
+ - true_ratio
1348
+ Faker::ChileRut:
1349
+ rut:
1350
+ - min_rut
1351
+ - fixed
1352
+ full_rut:
1353
+ - min_rut
1354
+ - fixed
1355
+ Faker::Code:
1356
+ isbn:
1357
+ - base
1358
+ ean:
1359
+ - base
1360
+ nric:
1361
+ - min_age
1362
+ - max_age
1363
+ Faker::Commerce:
1364
+ promotion_code:
1365
+ - digits
1366
+ department:
1367
+ - max
1368
+ - fixed_amount
1369
+ price:
1370
+ - range
1371
+ - as_string
1372
+ Faker::Company:
1373
+ polish_register_of_national_economy:
1374
+ - length
1375
+ brazilian_company_number:
1376
+ - formatted
1377
+ Faker::CryptoCoin:
1378
+ coin_name:
1379
+ - coin
1380
+ acronym:
1381
+ - coin
1382
+ url_logo:
1383
+ - coin
1384
+ Faker::Date:
1385
+ between:
1386
+ - from
1387
+ - to
1388
+ between_except:
1389
+ - from
1390
+ - to
1391
+ - excepted
1392
+ forward:
1393
+ - days
1394
+ backward:
1395
+ - days
1396
+ birthday:
1397
+ - min_age
1398
+ - max_age
1399
+ Faker::Demographic:
1400
+ height:
1401
+ - unit
1402
+ Faker::DrivingLicence:
1403
+ british_driving_licence:
1404
+ - last_name
1405
+ - initials
1406
+ - gender
1407
+ - date_of_birth
1408
+ Faker::File:
1409
+ dir:
1410
+ - segment_count
1411
+ - root
1412
+ - directory_separator
1413
+ file_name:
1414
+ - dir
1415
+ - name
1416
+ - ext
1417
+ - directory_separator
1418
+ Faker::Fillmurray:
1419
+ image:
1420
+ - grayscale
1421
+ - width
1422
+ - height
1423
+ Faker::Finance:
1424
+ vat_number:
1425
+ - country
1426
+ Faker::Hipster:
1427
+ words:
1428
+ - number
1429
+ - supplemental
1430
+ - spaces_allowed
1431
+ sentence:
1432
+ - word_count
1433
+ - supplemental
1434
+ - random_words_to_add
1435
+ sentences:
1436
+ - number
1437
+ - supplemental
1438
+ paragraph:
1439
+ - sentence_count
1440
+ - supplemental
1441
+ - random_sentences_to_add
1442
+ paragraphs:
1443
+ - number
1444
+ - supplemental
1445
+ paragraph_by_chars:
1446
+ - characters
1447
+ - supplemental
1448
+ Faker::IDNumber:
1449
+ brazilian_citizen_number:
1450
+ - formatted
1451
+ brazilian_id:
1452
+ - formatted
1453
+ Faker::Internet:
1454
+ email:
1455
+ - name
1456
+ - separators
1457
+ free_email:
1458
+ - name
1459
+ safe_email:
1460
+ - name
1461
+ username:
1462
+ - specifier
1463
+ - separators
1464
+ password:
1465
+ - min_length
1466
+ - max_length
1467
+ - mix_case
1468
+ - special_characters
1469
+ domain_name:
1470
+ - subdomain
1471
+ fix_umlauts:
1472
+ - string
1473
+ mac_address:
1474
+ - prefix
1475
+ url:
1476
+ - host
1477
+ - path
1478
+ - scheme
1479
+ slug:
1480
+ - words
1481
+ - glue
1482
+ user_agent:
1483
+ - vendor
1484
+ Faker::Invoice:
1485
+ amount_between:
1486
+ - from
1487
+ - to
1488
+ creditor_reference:
1489
+ - ref
1490
+ reference:
1491
+ - ref
1492
+ Faker::Json:
1493
+ shallow_json:
1494
+ - width
1495
+ - options
1496
+ add_depth_to_json:
1497
+ - json
1498
+ - width
1499
+ - options
1500
+ Faker::Lorem:
1501
+ words:
1502
+ - number
1503
+ - supplemental
1504
+ characters:
1505
+ - number
1506
+ sentence:
1507
+ - word_count
1508
+ - supplemental
1509
+ - random_words_to_add
1510
+ sentences:
1511
+ - number
1512
+ - supplemental
1513
+ paragraph:
1514
+ - sentence_count
1515
+ - supplemental
1516
+ - random_sentences_to_add
1517
+ paragraphs:
1518
+ - number
1519
+ - supplemental
1520
+ paragraph_by_chars:
1521
+ - number
1522
+ - supplemental
1523
+ question:
1524
+ - word_count
1525
+ - supplemental
1526
+ - random_words_to_add
1527
+ questions:
1528
+ - number
1529
+ - supplemental
1530
+ Faker::LoremFlickr:
1531
+ image:
1532
+ - size
1533
+ - search_terms
1534
+ - match_all
1535
+ grayscale_image:
1536
+ - size
1537
+ - search_terms
1538
+ - match_all
1539
+ pixelated_image:
1540
+ - size
1541
+ - search_terms
1542
+ - match_all
1543
+ colorized_image:
1544
+ - size
1545
+ - color
1546
+ - search_terms
1547
+ - match_all
1548
+ Faker::LoremPixel:
1549
+ image:
1550
+ - size
1551
+ - is_gray
1552
+ - category
1553
+ - number
1554
+ - text
1555
+ - secure
1556
+ Faker::Markdown:
1557
+ sandwich:
1558
+ - sentences
1559
+ - repeat
1560
+ Faker::Measurement:
1561
+ height:
1562
+ - amount
1563
+ length:
1564
+ - amount
1565
+ volume:
1566
+ - amount
1567
+ weight:
1568
+ - amount
1569
+ metric_height:
1570
+ - amount
1571
+ metric_length:
1572
+ - amount
1573
+ metric_volume:
1574
+ - amount
1575
+ metric_weight:
1576
+ - amount
1577
+ Faker::Name:
1578
+ initials:
1579
+ - number
1580
+ Faker::NationalHealthService:
1581
+ check_digit:
1582
+ - number
1583
+ Faker::Number:
1584
+ number:
1585
+ - digits
1586
+ leading_zero_number:
1587
+ - digits
1588
+ decimal_part:
1589
+ - digits
1590
+ decimal:
1591
+ - l_digits
1592
+ - r_digits
1593
+ hexadecimal:
1594
+ - digits
1595
+ normal:
1596
+ - mean
1597
+ - standard_deviation
1598
+ between:
1599
+ - from
1600
+ - to
1601
+ within:
1602
+ - range
1603
+ positive:
1604
+ - from
1605
+ - to
1606
+ negative:
1607
+ - from
1608
+ - to
1609
+ Faker::Omniauth:
1610
+ google:
1611
+ - name
1612
+ - email
1613
+ - uid
1614
+ facebook:
1615
+ - name
1616
+ - email
1617
+ - username
1618
+ - uid
1619
+ twitter:
1620
+ - name
1621
+ - nickname
1622
+ - uid
1623
+ linkedin:
1624
+ - name
1625
+ - email
1626
+ - uid
1627
+ github:
1628
+ - name
1629
+ - email
1630
+ - uid
1631
+ Faker::PhoneNumber:
1632
+ subscriber_number:
1633
+ - length
1634
+ Faker::Placeholdit:
1635
+ image:
1636
+ - size
1637
+ - format
1638
+ - background_color
1639
+ - text_color
1640
+ - text
1641
+ Faker::Relationship:
1642
+ familial:
1643
+ - connection
1644
+ Faker::Source:
1645
+ hello_world:
1646
+ - lang
1647
+ print:
1648
+ - str
1649
+ - lang
1650
+ print_1_to_10:
1651
+ - lang
1652
+ Faker::String:
1653
+ random:
1654
+ - length
1655
+ Faker::Stripe:
1656
+ valid_card:
1657
+ - card_type
1658
+ valid_token:
1659
+ - card_type
1660
+ invalid_card:
1661
+ - card_error
1662
+ ccv:
1663
+ - card_type
1664
+ Faker::Time:
1665
+ between:
1666
+ - from
1667
+ - to
1668
+ - format
1669
+ between_dates:
1670
+ - from
1671
+ - to
1672
+ - period
1673
+ - format
1674
+ forward:
1675
+ - days
1676
+ - period
1677
+ - format
1678
+ backward:
1679
+ - days
1680
+ - period
1681
+ - format
1682
+ Faker::Twitter:
1683
+ user:
1684
+ - include_status
1685
+ - include_email
1686
+ status:
1687
+ - include_user
1688
+ - include_photo
1689
+ status_entities:
1690
+ - include_photo
1691
+ Faker::Types:
1692
+ rb_string:
1693
+ - words
1694
+ rb_integer:
1695
+ - from
1696
+ - to
1697
+ rb_hash:
1698
+ - number
1699
+ - type
1700
+ complex_rb_hash:
1701
+ - number
1702
+ rb_array:
1703
+ - len
1704
+ Faker::Vehicle:
1705
+ model:
1706
+ - make_of_model
1707
+ mileage:
1708
+ - min
1709
+ - max
1710
+ license_plate:
1711
+ - state_abbreviation
1712
+ Faker::WorldCup:
1713
+ group:
1714
+ - group
1715
+ roster:
1716
+ - country
1717
+ - type
1718
+ Faker::Dota:
1719
+ quote:
1720
+ - hero
1721
+ Faker::Movies::StarWars:
1722
+ quote:
1723
+ - character
1724
+ Decidim::Faker::Localized:
1725
+ words:
1726
+ - number
1727
+ - supplemental
1728
+ characters:
1729
+ - number
1730
+ sentence:
1731
+ - word_count
1732
+ - supplemental
1733
+ - random_words_to_add
1734
+ sentences:
1735
+ - number
1736
+ - supplemental
1737
+ paragraph:
1738
+ - sentence_count
1739
+ - supplemental
1740
+ - random_sentences_to_add
1741
+ paragraphs:
1742
+ - number
1743
+ - supplemental
1744
+ paragraph_by_chars:
1745
+ - number
1746
+ - supplemental
1747
+ question:
1748
+ - word_count
1749
+ - supplemental
1750
+ - random_words_to_add
1751
+ questions:
1752
+ - number
1753
+ - supplemental
1754
+