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