rushdown-meta 0.9.7

Meta(YAML frontmatter) extension for rushdown markdown parser
Documentation

rushdown-meta

rushdown-meta is a simple meta(YAML frontmatter) plugin for rushdown, a markdown parser. It allows you to easily add metas to your markdown documents.

Installation

Add dependency to your Cargo.toml:

[dependencies]
rushdown-meta = "x.y.z"

rushdown-meta can also be used in no_std environments. To enable this feature, add the following line to your Cargo.toml:

rushdown-meta = { version = "x.y.z", default-features = false, features = ["no-std"] }

Syntax

---
date: 2024-01-01
tags:
    - rust
    - markdown
title: My Document
---

That's some text with a meta.

Usage

Example

use rushdown::{
    as_kind_data,
    parser::{self, Parser, ParserExtension },
    renderer::html,
    text,
};
use rushdown_meta::{meta_parser_extension, MetaParserOptions};

let source = r#"---
title: YAML Frontmatter
---
aaa
"#;
let parser = Parser::with_extensions(
    parser::Options::default(),
    meta_parser_extension(MetaParserOptions::default()),
);
let renderer = html::Renderer::with_extensions(html::Options::default(), html::NO_EXTENSIONS);
let mut reader = text::BasicReader::new(source);
let (arena, document_ref) = parser.parse(&mut reader);
let metadata = as_kind_data!(&arena, document_ref, Document).metadata();
assert_eq!(
    metadata.get("title").unwrap().as_str().unwrap(),
    "YAML Frontmatter"
);
let mut output = String::new();
renderer
    .render(&mut output, source, &arena, document_ref)
    .expect("Rendering failed");

Metadata is stored in the Document node. You can get the metadata from the Document using metadata() method.

Options

Option Type Default Description
table bool false whether to render the meta as a table

Donation

BTC: 1NEDSyUmo4SMTDP83JJQSWi1MvQUGGNMZB

Github sponsors also welcome.

License

MIT

Author

Yusuke Inuzuka