Packages
nldoc_validation
2.3.7
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/heading_order.ex
defmodule NLdoc.Validation.Rules.HeadingOrder do
@moduledoc """
This rule validates that headings are ordered sequentially-descending,
i.e. heading levels should only increase by one, but may decrease by any.
"""
alias NLdoc.Spec.Heading
alias NLdoc.Validation.{Severity, State}
use NLdoc.Validation.Rule,
severity: Severity.error(),
rule: "heading-order",
ruleset: "https://dequeuniversity.com/rules/axe/html",
ruleset_version: "4.10",
validates: [Heading]
@impl true
def valid?(%Heading{level: level}, %State{heading_level: last_level}),
do: level - 1 <= last_level
@impl true
def update_state(state = %State{}, %Heading{level: level}),
do: state |> State.set(:heading_level, level)
end