1 unstable release

0.1.2 Jan 16, 2023
0.1.1 Jan 16, 2023
0.1.0 Jan 16, 2023

#1742 in Parser implementations

Custom license

47KB
1K SLoC

mtif

mtif at crates.io mtif at docs.rs

Movable Type Import Format parser in Rust.

Usage

use mtif::{MTIFParser, MTIFEntry};

let parser = MTIFParser::new();
let contents = std::fs::read_to_string("./example/example.txt").unwrap();
let entries = parser.parse(&contents).unwrap();
dbg!(entries)

Output (omitted):

[
    MTIFEntry {
        metadata: MetaData {
            author: Some(
                "Foo Bar",
            ),
            title: Some(
                "A dummy title",
            ),
            basename: Some(
                "a-dummy-title",
            ),
            status: None,
            allow_comments: None,
            allow_pings: None,
            convert_breaks: None,
            primary_category: Some(
                "Media",
            ),
            category: [
                "News",
            ],
            date: 2002-01-31 15:31:05.0,
            no_entry: false,
            tags: [],
            image: None,
        },
        body: Some(
            "This is the body.\n\nAnother paragraph here.\n\nAnother paragraph here.",
        ),
        extended_body: Some(
            "Here is some more text.\n\nAnother paragraph here.\n\nAnother paragraph here.",
        ),
        excerpt: None,
        keywords: None,
        comments: [
            Comment {
                author: Some(
                    "Foo",
                ),
                email: None,
                url: None,
                ip: None,
                date: Some(
                    2002-01-31 15:47:06.0,
                ),
                text: "This is\nthe body of this comment.",
            },
            Comment {
                author: Some(
                    "Bar",
                ),
                email: Some(
                    "me@bar.com",
                ),
                url: None,
                ip: Some(
                    "205.66.1.32",
                ),
                date: Some(
                    2002-02-01 4:02:07.0,
                ),
                text: "This is the body of\nanother comment. It goes\nup to here.",
            },
        ],
        pings: [
            Ping {
                title: Some(
                    "My Entry",
                ),
                url: Some(
                    "http://www.foo.com/old/2002/08/",
                ),
                ip: Some(
                    "206.22.1.53",
                ),
                date: Some(
                    2002-08-05 16:09:12.0,
                ),
                blog_name: Some(
                    "My Weblog",
                ),
                text: "This is the start of my\nentry, and here it...",
            },
        ],
    },
		... omitted
]

Licence

See the LICENCE.

Dependencies

~2MB
~32K SLoC