erblint-github 0.0.1 → 0.0.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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e46c63a275b6e7d34b0aab81c0de051625bfbd7fc6c3fedb944a6d10a5ba3cff
|
4
|
+
data.tar.gz: 33984e9857ae9a998a3ae56a9fd29c0bf89557d41eee3698cb13731327da7988
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0404a048ebd068503aa1f7521a9c1f116165e3d9c507bee6e0a04c28ec3871b12fb53dc1141ff57981d013ac0af8d2bb41b21faea545c7741ff28f1d4e4c3b95
|
7
|
+
data.tar.gz: c64a47d57b7bb87ed7f1437be1430f44f860f58e0d28a6acca5b530e442350e9d1e8f28d83fdf8230d731a0851e812f9ad82278bec964aefffdac16fc250a530
|
data/README.md
CHANGED
@@ -23,13 +23,23 @@ require "erblint-github/linters"
|
|
23
23
|
```yaml
|
24
24
|
---
|
25
25
|
linters:
|
26
|
+
GitHub::Accessibility::ImageHasAlt:
|
27
|
+
enabled: true
|
28
|
+
GitHub::Accessibility::NoAriaLabelMisuse:
|
29
|
+
enabled: true
|
26
30
|
GitHub::Accessibility::NoRedundantImageAlt:
|
27
31
|
enabled: true
|
28
32
|
```
|
29
33
|
|
34
|
+
### Rules
|
35
|
+
|
36
|
+
- [GitHub::Accessibility::ImageHasAlt](./docs/rules/accessibility/no-aria-label-misuse.md)
|
37
|
+
- [GitHub::Accessibility::NoAriaLabelMisuse](./docs/rules/accessibility/image-has-alt.md)
|
38
|
+
- [GitHub::Accessibility::NoRedundantImageAlt](./docs/rules/accessibility/no-redundant-image-alt.md)
|
39
|
+
|
30
40
|
## Testing
|
31
41
|
|
32
42
|
```
|
33
43
|
bundle install
|
34
|
-
bundle exec rake
|
44
|
+
bundle exec rake
|
35
45
|
```
|
@@ -11,7 +11,7 @@ module ERBLint
|
|
11
11
|
indicator_node, _, code_node, = *node
|
12
12
|
indicator = indicator_node&.loc&.source
|
13
13
|
comment = code_node&.loc&.source&.strip
|
14
|
-
rule_name = self.class.name.
|
14
|
+
rule_name = self.class.name.gsub("ERBLint::Linters::", "")
|
15
15
|
|
16
16
|
if indicator == "#" && comment.start_with?("erblint:disable") && comment.match(rule_name)
|
17
17
|
if @offenses.any?
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../../custom_helpers"
|
4
|
+
|
5
|
+
module ERBLint
|
6
|
+
module Linters
|
7
|
+
module GitHub
|
8
|
+
module Accessibility
|
9
|
+
class ImageHasAlt < Linter
|
10
|
+
include ERBLint::Linters::CustomHelpers
|
11
|
+
include LinterRegistry
|
12
|
+
|
13
|
+
MESSAGE = "<img> should have an alt prop with meaningful text or an empty string for decorative images"
|
14
|
+
|
15
|
+
def run(processed_source)
|
16
|
+
tags(processed_source).each do |tag|
|
17
|
+
next if tag.name != "img"
|
18
|
+
next if tag.closing?
|
19
|
+
|
20
|
+
alt = possible_attribute_values(tag, "alt")
|
21
|
+
|
22
|
+
generate_offense(self.class, processed_source, tag) if alt.empty?
|
23
|
+
end
|
24
|
+
|
25
|
+
rule_disabled?(processed_source)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../../custom_helpers"
|
4
|
+
|
5
|
+
module ERBLint
|
6
|
+
module Linters
|
7
|
+
module GitHub
|
8
|
+
module Accessibility
|
9
|
+
class NoAriaLabelMisuse < Linter
|
10
|
+
include ERBLint::Linters::CustomHelpers
|
11
|
+
include LinterRegistry
|
12
|
+
|
13
|
+
GENERIC_ELEMENTS = %w[span div].freeze
|
14
|
+
NAME_RESTRICTED_ELEMENTS = %w[h1 h2 h3 h4 h5 h6 strong i p b code].freeze
|
15
|
+
|
16
|
+
# https://w3c.github.io/aria/#namefromprohibited
|
17
|
+
ROLES_WHICH_CANNOT_BE_NAMED = %w[caption code definition deletion emphasis insertion mark none paragraph presentation strong subscript suggestion superscript term time].freeze
|
18
|
+
|
19
|
+
MESSAGE = "[aria-label] and [aria-labelledby] usage are only reliably supported on interactive elements and a subset of ARIA roles"
|
20
|
+
|
21
|
+
def run(processed_source)
|
22
|
+
tags(processed_source).each do |tag|
|
23
|
+
next if tag.closing?
|
24
|
+
next unless possible_attribute_values(tag, "aria-label").present? || possible_attribute_values(tag, "aria-labelledby").present?
|
25
|
+
|
26
|
+
if NAME_RESTRICTED_ELEMENTS.include?(tag.name)
|
27
|
+
generate_offense(self.class, processed_source, tag)
|
28
|
+
elsif GENERIC_ELEMENTS.include?(tag.name)
|
29
|
+
role = possible_attribute_values(tag, "role")
|
30
|
+
if role.present?
|
31
|
+
generate_offense(self.class, processed_source, tag) if ROLES_WHICH_CANNOT_BE_NAMED.include?(role.join)
|
32
|
+
else
|
33
|
+
generate_offense(self.class, processed_source, tag)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
rule_disabled?(processed_source)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: erblint-github
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitHub Open Source
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: erb_lint
|
@@ -105,6 +105,8 @@ files:
|
|
105
105
|
- README.md
|
106
106
|
- lib/erblint-github/linters.rb
|
107
107
|
- lib/erblint-github/linters/custom_helpers.rb
|
108
|
+
- lib/erblint-github/linters/github/accessibility/image_has_alt.rb
|
109
|
+
- lib/erblint-github/linters/github/accessibility/no_aria_label_misuse.rb
|
108
110
|
- lib/erblint-github/linters/github/accessibility/no_redundant_image_alt.rb
|
109
111
|
homepage: https://github.com/github/erblint-github
|
110
112
|
licenses:
|