rpncalc-v4/script/main.js

31 lines
871 B
JavaScript

import {execRPN} from './shiny.mjs';
import {parseExprs} from './parse.mjs';
import {tokenize} from './token.mjs';
import {scope} from './builtin.mjs';
import './dom.mjs';
const tags = document.getElementsByTagName("script");
let scripts = []
for (let i = 0; i < tags.length; i++) {
scripts.push(tags.item(i));
}
scripts = scripts.filter(script => script.type === "text/rpncalc");
const dispatch = (src) => {
setTimeout(() => {
let http = new XMLHttpRequest();
http.onreadystatechange = async(e) => {
if (http.readyState == 4 && http.status == 200) {
execRPN(scope, parseExprs(tokenize(http.responseText)).parsed);
}
};
http.open("get", src);
http.responseType = "text";
http.send();
}, 0);
}
for (let i = 0; i < scripts.length; i++) {
dispatch(scripts[i].src);
}