This is a rust crate to help you with ECMAScript 2017 v9.0. It provides a parser and an AST (abstract syntax tree) implementation. We also provide some macros to construct the AST so you can do interesting things like optimization!
Add this to your Cargo.toml:
[dependencies]
ecmascript = "0.1"Then put this in your crate root:
externcrate ecmascript;This example reads a file, parses it, and then prints out a minified version.
The file reading is taken from the std::fs::File docs
externcrate ecmascript;use std::fs::File;use std::io::prelude::*;fnmain() -> std::io::Result<()>{// read foo.jsletmut file = File::open("foo.js")?;letmut contents = String::new();
file.read_to_string(&mut contents)?;// parse itlet ast = ecmascript::parse(&contents).unwrap();println!("{:?}", ast);}Docs are hosted on docs.rs.
ecmascript is used to parse a JavaScript module, and perform some operations
on it. For example, concatenating modules together, uglifying the variable names,
pretty printing uglified code, etc.
- ECMAScript 2017 v9.0 support (WIP)
- We are actively developing this library to be up to date!
- JSX Extended Support (WIP)
- JSX is meant to be an additive extension to the language
- AST Pretty Printer (WIP)
- This supports minification options, such as 0 whitespace
- AST rewrite rules (WIP)
- Eg. Constant folding, translating to older versions of the language, etc.
To test everything, just run this command:
cargo test
Or to run a single test,
cargo test --test <test_name>
To lint your code, use clippy. Its as easy as running once you have it installed!
cargo clippy
MIT © Nick Dujay