Current section

Files

Jump to
nldoc_validation lib nldoc validation rules page_has_heading_one.ex
Raw

lib/nldoc/validation/rules/page_has_heading_one.ex

defmodule NLdoc.Validation.Rules.PageHasHeadingOne do
@moduledoc """
This rule validates that a document has at least one heading level 1.
"""
alias NLdoc.Spec.{Document, Heading}
alias NLdoc.Validation.Severity
use NLdoc.Validation.Rule,
severity: Severity.error(),
rule: "page-has-heading-one",
ruleset: "https://dequeuniversity.com/rules/axe/html",
ruleset_version: "4.10",
validates: [Document]
@impl true
def valid?(%Document{children: children}, _),
do: NLdoc.Spec.find_recursive(children, &heading_one?/1) != nil
defp heading_one?(%Heading{level: 1}), do: true
defp heading_one?(_), do: false
end