g-plane / raffia

CSS, Sass, SCSS and Less parser, all in one.
http://raffia-play.vercel.app/
MIT License
51 stars 5 forks source link

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.

⌛ 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 criterion.

✨ Credit

Tests come from:

📜 License

MIT License

Copyright (c) 2022-present Pig Fang