Current section

Files

Jump to
nldoc_validation lib nldoc validation rules heading_order.ex
Raw

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