@moritzrs/mdast-util-ofm
v0.0.1
Published
mdast extension to support OFM
Downloads
85
Maintainers
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-ofm
Use
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