@moritzrs/mdast-util-ofm

0.0.1 • Public • Published

mdast-util-ofm

Build NPM Version NPM Bundle Size NPM Downloads GitHub License

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:

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:

Compatibility

This package was tested to work with node version 18 and later.

Related

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

Package Sidebar

Install

npm i @moritzrs/mdast-util-ofm

Weekly Downloads

2

Version

0.0.1

License

MIT

Unpacked Size

8.89 kB

Total Files

9

Last publish

Collaborators

  • moritzrs