From 33fe7927d7577b50e94dd8ac0bd780e0c59692fc Mon Sep 17 00:00:00 2001 From: Enzo Volkmann Date: Tue, 1 Oct 2024 15:20:31 +0200 Subject: [PATCH] feat: add `headingIds` field method --- src/index.php | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/index.php diff --git a/src/index.php b/src/index.php new file mode 100644 index 0000000..e536e27 --- /dev/null +++ b/src/index.php @@ -0,0 +1,36 @@ + [ + /** + * Add IDs to headings in a field + */ + 'headingIds' => function (Field $field): Field { + if ($field->isNotEmpty() === true) { + $dom = new Dom($field->value); + $levels = [ + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + ]; + $query = '//*[self::' . implode(' or self::', $levels) . ']'; + $elements = $dom->query($query); + + foreach ($elements as $element) { + $element->setAttribute('id', Str::slug($element->nodeValue)); + } + + $field->value = $dom->toString(); + } + + return $field; + }, + ], +]);