Add "Tag" as a new mdast type.
This commit is contained in:
parent
f87f742547
commit
f91c62fa06
48
src/index.ts
48
src/index.ts
|
|
@ -5,6 +5,23 @@ import { toHtml } from "hast-util-to-html"
|
||||||
import { toString } from 'mdast-util-to-string';
|
import { toString } from 'mdast-util-to-string';
|
||||||
import { FindAndReplaceList, findAndReplace as mdastFindReplace } from "mdast-util-find-and-replace"
|
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
|
// !? -> optional embedding
|
||||||
// \[\[ -> open brace
|
// \[\[ -> open brace
|
||||||
// ([^\[\]\|\#]+) -> one or more non-special characters ([,],|, or #) (name)
|
// ([^\[\]\|\#]+) -> one or more non-special characters ([,],|, or #) (name)
|
||||||
|
|
@ -179,35 +196,14 @@ export default function ofm() {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
tag = slugTag(tag)
|
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)
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
type: "link",
|
type: "tag",
|
||||||
url: `/tags#${tag}`,
|
value: tag,
|
||||||
data: {
|
data: {
|
||||||
hProperties: {
|
hName: 'tag',
|
||||||
className: ["tag"],
|
}
|
||||||
},
|
|
||||||
},
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
type: "text",
|
|
||||||
value: `#${tag}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
])
|
])
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue