mdast extensions to parse and serialize Obsidian Flavored Markdown (OFM).
This package contains two extensions to add support for OFM tag syntax to mdast
.
It supports callouts, tags as well as wikilinks and embeddings.
This project is useful if you want to support OFM in your markdown.
You can use these extension when you are working with mdast-util-from-markdown
and mdast-util-to-markdown
already.
When working with mdast-util-from-markdown
, you must combine this package with micromark-extension-ofm
.
When you don't need a syntax tree, you can use micromark
directly with micromark-extension-ofm
.
Alternatively you can also use the underlying features separately:
-
mdast-util-ofm-callout
- support for OFM callouts -
mdast-util-ofm-tag
- support for OFM tags -
mdast-util-ofm-wikilink
- support for OFM wikilinks
All these packages are used in remark-ofm
, which focusses on making it easier to transform content by abstracting these internal away.
This package is ESM only. In Node.js (version 18+), install with npm
:
npm install @moritzrs/mdast-util-ofm
import { fromMarkdown } from "mdast-util-from-markdown";
import { toMarkdown } from "mdast-util-to-markdown";
import { ofm } from "@moritzrs/micromark-extension-ofm";
import { ofmFromMarkdown, ofmToMarkdown } from "@moritzrs/mdast-util-ofm";
const tree = fromMarkdown("> [!info]+ Hey There\n> #tag\n> [[link]]", {
extensions: [ofm()],
mdastExtensions: [ofmFromMarkdown()],
});
console.log(tree);
const out = toMarkdown(tree, { extensions: [ofmToMarkdown()] });
console.log(out);
Yields
{
type: "root",
children: [
{
type: "ofmCallout",
kind: "info",
folded: false,
title: "Hey There",
children: [
{
type: "paragraph",
children: [
{
type: "ofmTag",
value: "tag",
},
{
type: "text",
value: "\n",
},
{
type: "ofmWikilink",
url: "link",
hash: "",
value: "link",
},
],
},
],
},
],
}
This is a #tag.
This package exports the identifiers ofmFromMarkdown
and ofmToMarkdown
.
There is no default export.
Creates an extension for mdast-util-from-markdown
to enable OFM in markdown.
none
Extension for mdast-util-from-markdown
that can be passed in extensions
, to enable OFM syntax (FromMarkdownExtension
).
Creates an extension for mdast-util-to-markdown
to enable OFM in markdown.
none
Extension for mdast-util-to-markdown
that can be passed in extensions
, to support OFM when serializing to markdown (ToMarkdownExtension
).
For more information, look at the individual packages:
-
mdast-util-ofm-callout
- support for OFM callouts -
mdast-util-ofm-tag
- support for OFM tags -
mdast-util-ofm-wikilink
- support for OFM wikilinks
This package was tested to work with node version 18
and later.
-
micromark-extension-ofm
- support for all of OFM in micromark -
remark-ofm
- support for all of OFM in remark
I don't know if i can check PRs in a timely manner, but feel free to open PRs or issues. If participation is high I will need to add a code of conduct and contribution guidelines.
This package is not affiliated with Obsidian.md or the developers of Obsidian.md.
MIT © Moritz R. Schulz