mirror of
https://github.com/LukeHagar/unicorn-utterances.git
synced 2025-12-06 12:57:44 +00:00
chore: WIP simplify data loading
This commit is contained in:
committed by
Corbin Crutchley
parent
7b063092e9
commit
e0591c63eb
36
src/utils/markdown/rehype-header-text.ts
Normal file
36
src/utils/markdown/rehype-header-text.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import { headingRank } from "hast-util-heading-rank";
|
||||
import { hasProperty } from "hast-util-has-property";
|
||||
import { toString } from "hast-util-to-string";
|
||||
import { Root, Parent } from "hast";
|
||||
import {visit} from "unist-util-visit";
|
||||
|
||||
/**
|
||||
* Plugin to add `data-header-text`s to headings.
|
||||
*/
|
||||
export const rehypeHeaderText = () => {
|
||||
return (tree: Root, file) => {
|
||||
visit(tree, "element", (node: Parent["children"][number]) => {
|
||||
if (
|
||||
headingRank(node) &&
|
||||
"properties" in node &&
|
||||
node.properties &&
|
||||
!hasProperty(node, "data-header-text")
|
||||
) {
|
||||
const headerText = toString(node);
|
||||
node.properties["data-header-text"] = headerText;
|
||||
|
||||
const headingWithID = {
|
||||
value: headerText,
|
||||
depth: headingRank(node)!,
|
||||
slug: node.properties["id"] as string,
|
||||
};
|
||||
|
||||
if (file.data.astro.frontmatter.headingsWithId) {
|
||||
file.data.astro.frontmatter.headingsWithId.push(headingWithID)
|
||||
} else {
|
||||
file.data.astro.frontmatter.headingsWithId = [headingWithID];
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user