#vue #svelte #markup-language #formatter #html #jinja #astro

markup_fmt

Configurable HTML, Vue, Svelte, Astro, Angular, Jinja, Twig, Nunjucks and Vento formatter

24 releases (12 breaking)

0.13.1 Sep 26, 2024
0.12.0 Aug 14, 2024
0.11.0 Jul 19, 2024
0.6.0 Mar 2, 2024
0.2.1 Nov 11, 2023

#23 in Template engine

Download history 10/week @ 2024-06-12 18/week @ 2024-06-19 128/week @ 2024-06-26 63/week @ 2024-07-03 71/week @ 2024-07-10 273/week @ 2024-07-17 147/week @ 2024-07-24 70/week @ 2024-07-31 40/week @ 2024-08-07 487/week @ 2024-08-14 765/week @ 2024-08-21 703/week @ 2024-08-28 1137/week @ 2024-09-04 995/week @ 2024-09-11 1121/week @ 2024-09-18 1138/week @ 2024-09-25

4,545 downloads per month
Used in 4 crates (3 directly)

MIT license

225KB
6K SLoC

markup_fmt is a configurable HTML, Vue, Svelte, Astro, Angular, Jinja, Twig, Nunjucks and Vento formatter.

Basic Usage

You can format source code string by using format_text function.

use markup_fmt::{config::FormatOptions, format_text, Language};

let options = FormatOptions::default();
assert_eq!("<div class=\"container\"></div>\n", &format_text(
    "<div class=container></div>",
    Language::Html,
    &options,
    |code, _| Ok::<_, std::convert::Infallible>(code.into()),
).unwrap());

For detailed documentation of configuration, please refer to Configuration on GitHub.

If there're syntax errors in source code, it will return [Err]:

use markup_fmt::{config::FormatOptions, format_text, FormatError, Language, SyntaxError};

let options = FormatOptions::default();
assert!(matches!(
    format_text(
        "<div>",
        Language::Html,
        &options,
        |code, _| Ok::<_, std::convert::Infallible>(code.into()),
    ).unwrap_err(),
    FormatError::Syntax(SyntaxError { .. })
));

External formatter can return [Err] as well. This error will be aggregated and returned in FormatError::External:

use markup_fmt::{config::FormatOptions, format_text, FormatError, Language};

struct ExternalFormatterError;

let options = FormatOptions::default();
assert!(matches!(
    format_text(
        "<script>a</script>",
        Language::Html,
        &options,
        |_, _| Err(ExternalFormatterError),
    ).unwrap_err(),
    FormatError::External(errors) if !errors.is_empty()
));

Dependencies

~3MB
~45K SLoC