Flexible code generation using WIDL
npm install @wapc/widl-codegenThis library works in tandem with wapc/widl-js to generate waPC
module code in Rust, AssemblyScript, and TinyGo.
``sh`
$ npm install @wapc/widl
$ npm install @wapc/widl-codegen
`js
const widl = require("@wapc/widl");
const ast = require("@wapc/widl/ast");
const assemblyscript = require("@wapc/widl-codegen/assemblyscript");
const schema =
namespace "mandelbrot"
interface {
update(width: u32, height: u32, limit: u32): [u16]
};
const context = new ast.Context({});
const doc = widl.parse(schema, { noLocation: true });
const writer = new ast.Writer();
const visitor = new assemblyscript.ScaffoldVisitor(writer);
doc.accept(context, visitor);
let source = writer.string();
console.log(source);
`
`html
const doc = widl.parse(namespace "mandelbrot"
interface {
update(width: u32, height: u32, limit: u32): [u16]
});
const context = new widl.ast.Context({});
const writer = new widl.ast.Writer();
const visitor = new widl.codegen.assemblyscript.ScaffoldVisitor(writer);
doc.accept(context, visitor);
let source = writer.string();
source = prettier.format(source, {
parser: "typescript",
plugins: prettierPlugins,
});
document.getElementById("generated").innerHTML = source;
``