10 releases (6 breaking)

0.7.2 Oct 21, 2023
0.7.1 Oct 17, 2023
0.6.0 Sep 27, 2023
0.5.1 Sep 18, 2023
0.1.0 Sep 25, 2022

#621 in Web programming

Download history 37/week @ 2024-01-26 14/week @ 2024-02-02 3/week @ 2024-02-09 12/week @ 2024-02-16 80/week @ 2024-02-23 174/week @ 2024-03-01 97/week @ 2024-03-08 12/week @ 2024-03-15 5/week @ 2024-03-22 26/week @ 2024-03-29 21/week @ 2024-04-05 3/week @ 2024-04-12

56 downloads per month
Used in 2 crates

MIT license

555KB
14K SLoC

Raffia

Crates.io docs.rs

Raffia is a parser which can parse CSS, SCSS, Sass (indented syntax) and Less. However, it won't compile SCSS, Sass or Less to CSS.

๐Ÿงช Playground

There is an online playground for inspecting AST. Visit: https://raffia-play.vercel.app/.

๐Ÿญ Example

use raffia::{ast::Stylesheet, Parser, Syntax};

let mut parser = Parser::new("a { color: green }", Syntax::Css);
let ast = parser.parse::<Stylesheet>().unwrap();
println!("{:#?}", ast);

You can find more examples in the examples directory.

For detailed usage, check out docs.rs.

๐Ÿ—๏ธ Current Status

  • CSS: Almost completed.
  • SCSS/Sass: Almost completed.
  • Less: Almost completed.

โŒ› Benchmark

You can compare performance with other parsers in benchmark.

First, you need to setup Rust and clone this repository. You also need to install cargo-criterion by running cargo install cargo-criterion.

Then, copy some CSS files to bench_data directory. You need to create that directory by yourself.

Now you can run benchmark by running cargo +nightly criterion.

โœจ Credit

Tests come from:

๐Ÿ“œ License

MIT License

Copyright (c) 2022-present Pig Fang

Dependencies

~1.3โ€“1.7MB
~41K SLoC