Current section

Files

Jump to
nldoc_validation lib nldoc validation rules style_italic_in_heading.ex
Raw

lib/nldoc/validation/rules/style_italic_in_heading.ex

defmodule NLdoc.Validation.Rules.StyleItalicInHeading do
@moduledoc """
This rule validates that heading is not manually styled italic.
Underlined is covered by the NoUnderline Rule
"""
alias NLdoc.Spec.{Heading, Link, Paragraph, Text}
alias NLdoc.Validation.{Severity, State}
use NLdoc.Validation.Rule,
severity: Severity.warning(),
rule: "style-italic-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 -> style == :italic end)
end