Packages
nldoc_validation
1.0.0
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/content/content.ex
defmodule NLdoc.Validation.Content do
@moduledoc """
This module provides helper functions for validating the content of NLdoc spec objects.
"""
@doc """
Returns true if the given text is visible, i.e. consists anything else than whitespace or invisible characters.
If the given text is an `NLdoc.Spec` object, this function will recursively check whether any of its children
contain visible text.
"""
@spec visible_text?(NLdoc.Spec.object() | String.t() | nil) :: boolean()
def visible_text?(text) when is_binary(text),
# \s matches standard whitespace characters.
# \b matches a backspace character.
# \x{0085} matches Unicode character U+0085 (Next Line).
# See the tests for this module for a complete list of all these Unicode characters and what they are.
# See also https://en.wikipedia.org/wiki/Whitespace_character#Unicode
do:
String.replace(
text,
~r/[\s\b\x{0085}\x{00A0}\x{1680}\x{180E}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}\x{2006}\x{2007}\x{2008}\x{2009}\x{200A}\x{200B}\x{200C}\x{200D}\x{2028}\x{2029}\x{202F}\x{205F}\x{2060}\x{3000}\x{FEFF}]/u,
""
) != ""
def visible_text?(%{text: text}), do: visible_text?(text)
def visible_text?(%{children: children}), do: Enum.any?(children, &visible_text?/1)
def visible_text?(_), do: false
end