# Markdown Parser
😎 This a crate that can parse a markdown file.
Especially when you have front matters in your markdown file, this would help you to parse them.
# Start
It is always easy to use this parser.
Just start to read a markdown file and parse it.
```rust
use markdown_parser::{
read_file, Error
};
fn main() -> Result<(), Error> {
let md = read_file("$PATH.md")?;
let content = md.content();
println!("{}", content);
Ok(())
}
```
# Front Matter
`md-parser` have 3 format for `front matter`, which can be confirmed in running time.
```rust
enum Format {
JSON,
YAML,
TOML,
}
```
These formats are the most popular format for front matters, if you are not included, maybe you need to do parsing work by yourself.
you can goto [documentation]("https://docs.rs/markdown-parser/") to see more about crate.
# Adapt
Sometimes you have to transform your front matter in markdown.
For example, you have this:
```yaml
---
date: 2020-01-02
title: it is yaml
categories:
- rust
tags:
- front-matter
- md
---
```
And you need a toml-style front matter for your markdown rendering tasks.
So you have just use feature `adapt` to use transforming task which will load `serde` crates.
```toml
[dependencies.markdown-parser]
version = "*"
features = ["adapt"]
```
In fact, this task is quite common so feature `adapt` is enabled in default.
Now you can change md file like this:
```rust
use markdown_parser::*;
fn main() -> Result<(), Error> {
let origin = read_file("yaml.md")?;
let md = origin.adapt::<TomlAdapter, BasicObject>()?;
md.write_file("toml.md")?;
Ok(())
}
```