easyjsr 0.4.5

easyjs internal JS runtime
docs.rs failed to build easyjsr-0.4.5
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: easyjsr-0.3.0

easyjsr

Default runtime for easyjs. Rust wrapper of ejr.

usage

To use with easyjs you can set the runtime to easyjsr. It is also the default runtime.

easyjs repl --runtime easyjsr
> import 'std'
> @print('Hello World')

For developers

This is a really easy to use runtime for embedding in rust projects. Important thing to note is that it does not currently support MSVC builds. Only GNU/Clang. So if using windows make sure to install the correct build system.

rustup target add x86_64-pc-windows-gnu
# And build with
cargo build --target x86_64-pc-windows-gnu

Evaluating JS

let result = ejr.eval("1 + 1");
println!("{}", ejr.val_to_string(result)); // 2

Calling specific functions

let script = r##"
    function say_hello_to(name) {
        console.log('Hello', name);
    }
"##;

let result = ejr.call("say_hello_to", vec!["Jordan"]); // Hello Jordan

Creating callables

fn ___print(msg: String) {
    println!("{msg}");
}

ejr.register_callback("___print", ___print);

// Lambdas
ejr.register_callback("___log", |msg: String| {
    println!("{msg}");
});

Compiling JS into exe

This is mostly for libraries, you usually won't use this in an app.

compile_js_code(code);

// Or as a module
compile_js_code_as_module(code);

Use case

The use case of another JS runtime is specifically to be a high level wrapper for easy FFI use in:

  • Kazoku
  • easyjs
  • Going Up

All projects that use easyjs as scripting.