3 releases (breaking)
Uses old Rust 2015
0.2.0 | Sep 29, 2018 |
---|---|
0.1.0 | Jun 30, 2018 |
0.0.1 | Jun 28, 2018 |
#2888 in Parser implementations
41 downloads per month
Used in 2 crates
(via atlas-coverage-core)
6MB
56K
SLoC
ecmascript
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!
Usage
Add this to your Cargo.toml
:
[dependencies]
ecmascript = "0.1"
Then put this in your crate root:
extern crate ecmascript;
Example
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
extern crate ecmascript;
use std::fs::File;
use std::io::prelude::*;
fn main() -> std::io::Result<()> {
// read foo.js
let mut file = File::open("foo.js")?;
let mut contents = String::new();
file.read_to_string(&mut contents)?;
// parse it
let ast = ecmascript::parse(&contents).unwrap();
println!("{:?}", ast);
}
API Reference
Docs are hosted on docs.rs.
About
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.
Features (Planned)
- 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.
Testing
To test everything, just run this command:
cargo test
Or to run a single test,
cargo test --test <test_name>
Linting
To lint your code, use clippy. Its as easy as running once you have it installed!
cargo clippy
References
License
MIT © Nick Dujay
Dependencies
~2.4–3.5MB
~64K SLoC