rubocop-brands_insurance 1.3.0 → 1.4.0.pre.rc.1
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.
- checksums.yaml +4 -4
- data/README.adoc +1 -0
- data/config/default.yml +7 -0
- data/docs/cops/layout/README.adoc +7 -0
- data/docs/cops/layout/multiline_array_line_breaks/README.adoc +44 -0
- data/lib/rubocop/brands_insurance/version.rb +1 -1
- data/lib/rubocop/cop/brands_insurance/layout/multiline_array_line_breaks.rb +73 -0
- data/lib/rubocop/cop/brands_insurance_cops.rb +1 -0
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f71b8941f86c6189771d5c9bfcc81f4744e9fb821d45d5ba3c93c5a0fd195320
|
4
|
+
data.tar.gz: 8032dc595911c74d1d4296d0123918c98e60cb273fd4aa0d1654602526363936
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9a13ac68f7eead1d4186767b1fef7c6e8eaae15beb823a1344acb33bc7a969ef4bf3c8b05665e3fc3291b32f749293237539163d7f8eafc13e4a78f346faed7
|
7
|
+
data.tar.gz: 58be8bafe667d21c2b9be721a6102fe9fabe16ec8b03633d430385366bb37b4b1dabbb73c552d1f5197affe9f5cbc637b3aefa4a30739f27f640d7431ec898a8
|
data/README.adoc
CHANGED
data/config/default.yml
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
BrandsInsurance/Layout/MultilineArrayLineBreaks:
|
2
|
+
Description: 'Fork of base Layout/MultilineArrayLineBreaks rule'
|
3
|
+
Enabled: true
|
4
|
+
VersionAdded: '1.3.0'
|
5
|
+
AllowMultilineFinalElement: true
|
6
|
+
AllowPercentArray: true
|
7
|
+
|
1
8
|
BrandsInsurance/Style/DisallowedMethods:
|
2
9
|
Description: 'Disallows the usage of `#abort` and `#tap` methods'
|
3
10
|
Enabled: true
|
@@ -0,0 +1,44 @@
|
|
1
|
+
= ``Layout/MultilineArrayLineBreaks``
|
2
|
+
|
3
|
+
== Description
|
4
|
+
|
5
|
+
Extends the built-in link:https://docs.rubocop.org/rubocop/1.49/cops_layout.html#layoutmultilinearraylinebreaks[``Layout/MultilineArrayLineBreaks``]
|
6
|
+
and adds the ``AllowPercentArray`` option
|
7
|
+
|
8
|
+
== Examples
|
9
|
+
|
10
|
+
[source,ruby]
|
11
|
+
----
|
12
|
+
# bad
|
13
|
+
%w[
|
14
|
+
1
|
15
|
+
2
|
16
|
+
3
|
17
|
+
4
|
18
|
+
]
|
19
|
+
|
20
|
+
# good
|
21
|
+
%w[
|
22
|
+
1 2
|
23
|
+
3 4
|
24
|
+
]
|
25
|
+
----
|
26
|
+
|
27
|
+
== Configurable Attributes
|
28
|
+
|
29
|
+
|===
|
30
|
+
|Name |Default value |Configurable values
|
31
|
+
|
32
|
+
|AllowMultilineFinalElement
|
33
|
+
|false
|
34
|
+
|Boolean
|
35
|
+
|
36
|
+
|AllowPercentArray
|
37
|
+
|false
|
38
|
+
|Boolean
|
39
|
+
|
40
|
+
|===
|
41
|
+
|
42
|
+
== References
|
43
|
+
|
44
|
+
https://github.com/BrandsInsurance/expert-chainsaw/issues/1032
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module BrandsInsurance
|
6
|
+
module Layout
|
7
|
+
class MultilineArrayLineBreaks < Base
|
8
|
+
include RuboCop::Cop::MultilineElementLineBreaks
|
9
|
+
# extend RuboCop::Cop::AutoCorrector
|
10
|
+
|
11
|
+
# `RuboCop::Cop::AutoCorrector` must be extended but it only has this method returning `true`
|
12
|
+
#
|
13
|
+
# @return [Boolean]
|
14
|
+
#
|
15
|
+
def support_autocorrect?
|
16
|
+
false
|
17
|
+
end
|
18
|
+
|
19
|
+
MESSAGE = 'Each item in a multi-line array must start on a separate line.'
|
20
|
+
# MSG is needed for `check_line_breaks`
|
21
|
+
MSG = MESSAGE
|
22
|
+
|
23
|
+
def on_array(node)
|
24
|
+
return if allowed_percent_array?(node)
|
25
|
+
|
26
|
+
check_line_breaks(node, node.children, ignore_last: ignore_last_element?)
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
# Check conig option
|
32
|
+
#
|
33
|
+
# @return [Boolean]
|
34
|
+
#
|
35
|
+
def ignore_last_element?
|
36
|
+
cop_config.fetch('AllowMultilineFinalElement', false)
|
37
|
+
end
|
38
|
+
|
39
|
+
# Check conig option
|
40
|
+
#
|
41
|
+
# @return [Boolean]
|
42
|
+
#
|
43
|
+
def allowed_percent_array?(node)
|
44
|
+
cop_config.fetch('AllowPercentArray', false) && node.percent_literal?
|
45
|
+
end
|
46
|
+
|
47
|
+
# Copied from rubocop's source
|
48
|
+
def check_line_breaks(_node, children, ignore_last: false)
|
49
|
+
return if all_on_same_line?(children, ignore_last: ignore_last)
|
50
|
+
|
51
|
+
last_seen_line = -1
|
52
|
+
children.each do |child|
|
53
|
+
if last_seen_line >= child.first_line
|
54
|
+
add_offense(child, message: MESSAGE)
|
55
|
+
else
|
56
|
+
last_seen_line = child.last_line
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# Copied from rubocop's source
|
62
|
+
def all_on_same_line?(nodes, ignore_last: false)
|
63
|
+
return true if nodes.empty?
|
64
|
+
|
65
|
+
return same_line?(nodes.first, nodes.last) if ignore_last
|
66
|
+
|
67
|
+
nodes.first.first_line == nodes.last.last_line
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-brands_insurance
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0.pre.rc.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brands Insurance
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-04-
|
11
|
+
date: 2023-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubocop
|
@@ -35,6 +35,8 @@ files:
|
|
35
35
|
- LICENSE.txt
|
36
36
|
- README.adoc
|
37
37
|
- config/default.yml
|
38
|
+
- docs/cops/layout/README.adoc
|
39
|
+
- docs/cops/layout/multiline_array_line_breaks/README.adoc
|
38
40
|
- docs/cops/style/README.adoc
|
39
41
|
- docs/cops/style/disallowed_methods/README.adoc
|
40
42
|
- lib/rubocop-brands_insurance.rb
|
@@ -44,6 +46,7 @@ files:
|
|
44
46
|
- lib/rubocop/cop/brands_insurance/generator.rb
|
45
47
|
- lib/rubocop/cop/brands_insurance/generator/cop_readme_injector.rb
|
46
48
|
- lib/rubocop/cop/brands_insurance/generator/dept_readme_injector.rb
|
49
|
+
- lib/rubocop/cop/brands_insurance/layout/multiline_array_line_breaks.rb
|
47
50
|
- lib/rubocop/cop/brands_insurance/style/disallowed_methods.rb
|
48
51
|
- lib/rubocop/cop/brands_insurance_cops.rb
|
49
52
|
homepage: https://github.com/BrandsInsurance/expert-chainsaw/
|
@@ -65,9 +68,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
65
68
|
version: 3.0.1
|
66
69
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
70
|
requirements:
|
68
|
-
- - "
|
71
|
+
- - ">"
|
69
72
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
73
|
+
version: 1.3.1
|
71
74
|
requirements: []
|
72
75
|
rubygems_version: 3.2.15
|
73
76
|
signing_key:
|