Skip to content

Latest commit

 

History

History
24 lines (18 loc) · 1.1 KB

File metadata and controls

24 lines (18 loc) · 1.1 KB

Rust-based NetsBlox extension generator

This repository contains an example of a WASM-based NetsBlox extension and code for the two crates used to make this possible.

The index.js file for the extension is generated by a build script. For example, to add a custom block, in the source lib.rs you could use:

#[wasm_bindgen]
#[netsblox_extension_block(name = "logHelloWorld", category = "Hello World", spec = "Log Hello World!", target = netsblox_extension_util::TargetObject::Both)]
pub fn hello_world() {
    console::log_1(&"Hello World!".to_owned().into());
}

And in the extension file, the following will be generated:

new Extension.Block(
    'logHelloWorld',
    'command',
    'Hello World',
    'Log Hello World!',
    [],
    function () { return ExampleExtension_fns.hello_world(); }
).for(SpriteMorph, StageMorph),

The other sections of the file will be generated to match, allowing the block to be used when the extension is loaded. The ExampleExtension_fns object contains the functions used by the extension (in this case, named 'ExampleExtension')