Skip to content

Repository files navigation

ecmascript Crates.ioCrates.iodocsBuild Statuscodecov

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:

externcrate 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

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);}

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

About

A rust implementation of an EcmaScript Parser

Topics

Resources

Contributing

Stars

12 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages