Skip to content

Markdown parser and transformer, in Rust, using Pest

License

Notifications You must be signed in to change notification settings

litchipi/mdtrans

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mdtrans

Markdown parser and transformer, in Rust, using Pest

This is not the fastest parser / transformer, but it's built in order to provide the most flexibility to your needs.

Usage

#[derive(Default)]
pub struct MyOwnTransformer {
   image_count: usize,
   image_trans: usize,
}

impl MarkdownTransformer for MyOwnTransformer {
    fn peek_image(&mut self, alt: String, url: String, add_tags: HashMap<String, String>) {
        self.image_count_total += 1;
    }
    fn tranform_image(&mut self, alt: String, url: String, add_tags: HashMap<String, String>) -> String {
        self.image_trans += 1;
        format!("Image {}/{} <img alt=\"{alt}\" href=\"{url}\">", self.image_trans, self.image_count)
    }
}

fn main() {
    let trans = MyOwnTransformer::default();
    let input = " ... ".to_string();
    let output = transform_markdown_string(input, &mut trans).unwrap();
    println!("{output}");
}

Inside the transform_markdown_string function, the transformer will perform all peek functions before.
This means that in this code we first count the total number of images, and then transform each one of them.
The result will be something like:

Image 1/2 <img alt="toto" href="url">
Image 2/2 <img alt="tutu" href="url">

For an example of Markdown-to-HTML implementation, see this file
For the definition of the trait itself, see this file

Contribute

This is a hobby side-project, but you can contribute if you feel like it !

  • Contributions on the pest grammar file are appreciated as I'm really not an expert in it
  • You can open an issue if you find some Markdown inputs that are not supported (or not well) by this engine, or causes bugs.

About

Markdown parser and transformer, in Rust, using Pest

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages