Packages
nldoc_validation
2.3.2
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/definition_term_has_definition_details.ex
defmodule NLdoc.Validation.Rules.DefinitionTermHasDefinitionDetails do
@moduledoc """
This rule validates that each DefinitionTerm in a DefinitionList is followed by a DefinitionDetails.
"""
alias NLdoc.Spec.{DefinitionDetails, DefinitionList, DefinitionTerm}
alias NLdoc.Validation.{Severity, State}
use NLdoc.Validation.Rule,
severity: Severity.error(),
rule: "definition-term-has-definition-details",
ruleset: "https://validation.spec.nldoc.nl/",
# @TODO set `ruleset_version` to a real version
ruleset_version: "unknown",
validates: [DefinitionDetails, DefinitionList, DefinitionTerm]
@impl true
# Set the current id of the DefinitionTerm.
def update_state(state = %State{}, %DefinitionTerm{id: id}),
do: state |> State.set(:definition_term_id_without_details, id)
# The previous one has details if it is followed by a DefinitionDetails.
# Set to nil if the current one is a DefinitionTerm or DefinitionList.
def update_state(state = %State{}, _),
do: state |> State.set(:definition_term_id_without_details, nil)
# If two definition terms directly follow up on eachother, the previous
# one has no details. Therefore set a finding for the previous one.
@impl true
def validate(
resource = %DefinitionTerm{},
state = %NLdoc.Validation.State{definition_term_id_without_details: id}
)
when not is_nil(id),
do:
state
|> NLdoc.Validation.State.prepend(:findings, make_validation(id))
|> update_state(resource)
def validate(resource, state = %NLdoc.Validation.State{}),
do: state |> update_state(resource)
end