Package Exports
- @moritzrs/mdast-util-ofm
Readme
mdast-util-ofm
mdast extensions to parse and serialize Obsidian Flavored Markdown (OFM).
What is this?
This package contains two extensions to add support for OFM tag syntax to mdast.
It supports callouts, tags as well as wikilinks and embeddings.
When to use this
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 calloutsmdast-util-ofm-tag- support for OFM tagsmdast-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.
Install
This package is ESM only. In Node.js (version 18+), install with npm:
npm install @moritzrs/mdast-util-ofmUse
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.API
This package exports the identifiers ofmFromMarkdown and ofmToMarkdown.
There is no default export.
ofmFromMarkdown()
Creates an extension for mdast-util-from-markdown to enable OFM in markdown.
Parameters
none
Returns
Extension for mdast-util-from-markdown that can be passed in extensions, to enable OFM syntax (FromMarkdownExtension).
ofmToMarkdown()
Creates an extension for mdast-util-to-markdown to enable OFM in markdown.
Parameters
none
Returns
Extension for mdast-util-to-markdown that can be passed in extensions, to support OFM when serializing to markdown (ToMarkdownExtension).
More Information
For more information, look at the individual packages:
mdast-util-ofm-callout- support for OFM calloutsmdast-util-ofm-tag- support for OFM tagsmdast-util-ofm-wikilink- support for OFM wikilinks
Compatibility
This package was tested to work with node version 18 and later.
Related
micromark-extension-ofm- support for all of OFM in micromarkremark-ofm- support for all of OFM in remark
Contribute
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.
Disclaimer
This package is not affiliated with Obsidian.md or the developers of Obsidian.md.
License
MIT © Moritz R. Schulz