2 unstable releases

0.2.0 Jun 25, 2023
0.1.1 Nov 18, 2021

#2164 in Parser implementations

Download history 9/week @ 2024-01-04 23/week @ 2024-02-15 87/week @ 2024-02-22 17/week @ 2024-02-29 34/week @ 2024-03-07 33/week @ 2024-03-14 4/week @ 2024-03-21 28/week @ 2024-03-28 26/week @ 2024-04-04 3/week @ 2024-04-11 6/week @ 2024-04-18

63 downloads per month
Used in polysite

MIT license

12KB
256 lines

fronma

test

Front Matter parser for Rust.

Usage

Add this crate as a dependency:

[dependencies]
fronma = "~0.1"

then use fronma::parser::parse to parse text that has YAML Front Matter:

use fronma::parser::parse;
use serde::Deserialize;

#[derive(Deserialize)]
struct Headers {
  title: String,
}

fn main() {
    let text = r#"---
title: A
---
B
"#;

    let data = parse::<Headers>(text).unwrap();
    assert_eq!(data.headers.title, "A");
    assert_eq!(data.body, "B\n");
}

Other formats

This library supports the following Front Matter formats:

  • YAML (supported by default feature)
  • TOML (requires toml feature)
  • JSON (requires json feature)

For example, when you want to use TOML format, add this crate with toml feature:

[dependencies]
fronma = { version = "~0.1", features = ["toml"] }

then use fronma::parser::parse_with_engine like this:

use fronma::engines::Toml;
use fronma::parser::parse_with_engine;
use serde::Deserialize;

#[derive(Deserialize)]
struct Headers {
  title: String,
}

fn main() {
    let text = r#"---
title = "dummy_title"
---
dummy_body
"#;
    let result = parse_with_engine::<Headers, Toml>(text).unwrap();
    assert_eq!(result.headers.title, "dummy_title");
    assert_eq!(result.body, "dummy_body\n");
}

Dependencies

~2MB
~41K SLoC