thoth_cli/
formatter.rs

1use anyhow::Result;
2use pulldown_cmark::{Options, Parser};
3use pulldown_cmark_to_cmark::cmark;
4use serde_json::Value;
5
6pub fn format_markdown(input: &str) -> Result<String> {
7    let mut options = Options::empty();
8    options.insert(Options::ENABLE_TABLES);
9    options.insert(Options::ENABLE_FOOTNOTES);
10    options.insert(Options::ENABLE_STRIKETHROUGH);
11    options.insert(Options::ENABLE_TASKLISTS);
12
13    let parser = Parser::new_ext(input, options);
14    let mut output = String::new();
15    cmark(parser, &mut output)?;
16    Ok(output)
17}
18
19pub fn format_json(input: &str) -> Result<String> {
20    let parsed: Value = serde_json::from_str(input)?;
21    Ok(serde_json::to_string_pretty(&parsed)?)
22}