mirror of https://github.com/Baidicoot/rpncalc-v4
33 lines
870 B
JavaScript
33 lines
870 B
JavaScript
import {assertType, addDefn} from './builtin.mjs';
|
|
import {execFn} from './shiny.mjs';
|
|
|
|
const getElem = (args) => [{type:"domNode", val:document.getElementById(args[0])}];
|
|
const setHTML = (args) => args[0].innerHTML = args[1];
|
|
const mutref = (args) => [{type:"&mut", val:args[0]}];
|
|
const readmut = (args) => [args[0]];
|
|
|
|
const log = (args) => {
|
|
console.log(args);
|
|
return [];
|
|
}
|
|
|
|
const writemut = (args) => {
|
|
assertType("&mut", args[1]);
|
|
args[1].val = args[0];
|
|
return [];
|
|
}
|
|
|
|
const onclick = (args) => {
|
|
args[0].onclick = (_) => {
|
|
execFn(args[1]);
|
|
}
|
|
return [];
|
|
}
|
|
|
|
addDefn("log", 1, log);
|
|
addDefn("getId", ["string"], getElem);
|
|
addDefn("setHTML", ["domNode", "string"], setHTML);
|
|
addDefn("mutref", 1, mutref);
|
|
addDefn("readmut", ["&mut"], readmut);
|
|
addDefn("writemut", 2, writemut);
|
|
addDefn("onclick", ["domNode", "closure"], onclick); |