From f91c62fa061b0fbae7a4babc7814e416f483351d Mon Sep 17 00:00:00 2001 From: Peaceultime Date: Wed, 4 Sep 2024 13:25:53 +0200 Subject: [PATCH] Add "Tag" as a new mdast type. --- bun.lockb | Bin 40201 -> 40201 bytes src/index.ts | 48 ++++++++++++++++++++++-------------------------- 2 files changed, 22 insertions(+), 26 deletions(-) diff --git a/bun.lockb b/bun.lockb index 833fb135f30dd8af9c0e84a093b7c60c6f3c21e4..66ea51f0de70311f4d8a2d423feec60882325527 100644 GIT binary patch delta 22 dcmeC&#nicrX#;OMJ7b)Qo`IghW|8!-rT|wc2VDRF delta 22 acmeC&#nicrX#;OMI}-yKY!*rXY6<{Lq6QEE diff --git a/src/index.ts b/src/index.ts index 655cf86..78c175a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,6 +5,23 @@ import { toHtml } from "hast-util-to-html" import { toString } from 'mdast-util-to-string'; import { FindAndReplaceList, findAndReplace as mdastFindReplace } from "mdast-util-find-and-replace" +declare module 'mdast' +{ + interface Tag extends Literal { + type: "tag"; + data?: TagData | undefined; + } + interface TagData extends Data {} + interface PhrasingContentMap + { + tag: Tag; + } + interface RootContentMap + { + tag: Tag; + } +} + // !? -> optional embedding // \[\[ -> open brace // ([^\[\]\|\#]+) -> one or more non-special characters ([,],|, or #) (name) @@ -179,35 +196,14 @@ export default function ofm() { return false } - tag = slugTag(tag) - - if (!file.data) - file.data = {}; - - if (!file.data.frontmatter) - file.data.frontmatter = {}; - - if (!file.data.frontmatter.tags) - file.data.frontmatter.tags = []; - - if (file.data.frontmatter && !file.data.frontmatter.tags.includes(tag)) { - file.data.frontmatter.tags.push(tag) - } + tag = slugTag(tag); return { - type: "link", - url: `/tags#${tag}`, + type: "tag", + value: tag, data: { - hProperties: { - className: ["tag"], - }, - }, - children: [ - { - type: "text", - value: `#${tag}`, - }, - ], + hName: 'tag', + } } }, ])