Skip to main content

latest
Works with
It is unknown whether this package works with Node.js, Deno, Browsers, Cloudflare Workers, Bun
It is unknown whether this package works with Node.js
It is unknown whether this package works with Deno
It is unknown whether this package works with Browsers
It is unknown whether this package works with Cloudflare Workers
It is unknown whether this package works with Bun
JSR Score64%
Published2 years ago (0.215.0)

Extracts front matter from strings.

createExtractor and test functions to handle many forms of front matter.

Adapted from jxson/front-matter.

Supported formats:

Basic usage

example.md

---
module: front-matter
tags:
  - yaml
  - toml
  - json
---

deno is awesome

example.ts

import { extract } from "@std/front-matter/any";
import { test } from "@std/front-matter/test";

const str = await Deno.readTextFile("./example.md");

if (test(str)) {
  console.log(extract(str));
} else {
  console.log("document doesn't contain front matter");
}
$ deno run ./example.ts
{
  frontMatter: "module: front-matter\ntags:\n  - yaml\n  - toml\n  - json",
  body: "deno is awesome",
  attrs: { module: "front-matter", tags: [ "yaml", "toml", "json" ] }
}

The above example recognizes any of the supported formats, extracts metadata and parses accordingly. Please note that in this case both the YAML and TOML parsers will be imported as dependencies.

If you need only one specific format then you can import the file named respectively from here.

Advanced usage

import { test as _test } from "@std/front-matter/test";
import {
  createExtractor,
  Parser,
} from "@std/front-matter";
import { parse } from "@std/toml/parse";

const extract = createExtractor({
  "toml": parse as Parser,
  "json": JSON.parse as Parser,
});

export function test(str: string): boolean {
  return _test(str, ["toml", "json"]);
}

In this setup extract() and test() will work with TOML and JSON and only. This way the YAML parser is not loaded if not needed. You can cherry-pick which combination of formats are you supporting based on your needs.

Delimiters

YAML

---
these: are
---
---yaml
all: recognized
---
= yaml =
as: yaml
= yaml =

TOML

---toml
this = 'is'
---
= toml =
parsed = 'as'
toml = 'data'
= toml =
+++
is = 'that'
not = 'cool?'
+++

JSON

---json
{
  "and": "this"
}
---
{
  "is": "JSON"
}

Report package

Please provide a reason for reporting this package. We will review your report and take appropriate action.

Please review the JSR usage policy before submitting a report.

Add Package

deno add jsr:@std/front-matter

Import symbol

import * as front_matter from "@std/front-matter";
or

Import directly with a jsr specifier

import * as front_matter from "jsr:@std/front-matter";