Packages
nldoc_validation
2.2.0
4.0.42
4.0.41
4.0.40
4.0.39
4.0.38
4.0.37
4.0.36
4.0.35
4.0.34
4.0.33
4.0.32
4.0.31
4.0.30
4.0.29
4.0.28
4.0.27
4.0.26
4.0.25
4.0.24
4.0.23
4.0.22
4.0.21
4.0.20
4.0.19
4.0.18
4.0.17
4.0.16
4.0.15
4.0.14
4.0.12
4.0.11
4.0.10
4.0.9
4.0.8
4.0.7
4.0.6
4.0.5
4.0.4
4.0.3
4.0.2
4.0.1
4.0.0
3.0.0
2.3.17
2.3.16
2.3.15
2.3.14
2.3.13
2.3.12
2.3.11
2.3.10
2.3.9
2.3.8
2.3.7
2.3.6
2.3.5
2.3.4
2.3.3
2.3.2
2.3.1
2.3.0
2.2.0
2.1.0
2.0.6
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.0.2
1.0.1
1.0.0
WCAG validator for the NLdoc specification.
Current section
Files
Jump to
Current section
Files
lib/nldoc/validation/rules/style_in_heading.ex
defmodule NLdoc.Validation.Rules.StyleInHeading do
@moduledoc """
This rule validates that heading is not manually styled.
"""
alias NLdoc.Spec.{Heading, Link, Paragraph, Text}
alias NLdoc.Validation.{Severity, State}
# Underlined is covered by the NoUnderline Rule
@disallowed_styles [:bold, :italic]
use NLdoc.Validation.Rule,
severity: Severity.warning(),
rule: "style-in-heading",
ruleset: "https://validation.spec.nldoc.nl/",
# @TODO set `ruleset_version` to a real version
ruleset_version: "unknown",
validates: [Paragraph, Heading, Text, Link]
@impl true
def update_state(state = %State{}, %Heading{}),
do: %State{state | parent_is_heading?: true}
@impl true
def update_state(state = %State{}, %{children: _children}),
do: %State{state | parent_is_heading?: false}
@impl true
def valid?(%{styling: styling}, %State{parent_is_heading?: true}),
do: !Enum.any?(styling, fn style -> Enum.member?(@disallowed_styles, style) end)
end