basic block stuff

This commit is contained in:
biglyderv 2024-11-29 21:04:43 -05:00
parent d172d38e5e
commit e62e897d8d
5 changed files with 68 additions and 11 deletions

View file

@ -1,5 +1,6 @@
import { unparser } from "./unparser.mjs";
import { parser, runner } from "./parser.mjs";
import { parser, runner, openers } from "./parser.mjs";
import objs from "./objs.mjs";
let data = parser(`
on(
@ -13,16 +14,35 @@ let data = parser(`
)
`);
console.log(unparser(data));
console.log(unparser(parser(unparser(data))));
(async function () {
await runner(data, objs);
let ev = new Event('start');
let ev = new Event('start'); // TODO: more events
objs.events.dispatchEvent(ev);
createBlocks(data);
})()
function createBlock() {
async function createBlocks(dat) {
let args = dat.args;
if (!args || !args[0]) args = [dat.args];
if (!args || !args[0]) args = [];
for (let i in args) {
args[i] = await createBlocks(args[i])
}
}
let o = dat.op ? dat.op.charCodeAt() : 'nil';
let div = document.createElement('div');
div.classList.add(`op-${o}`)
div.classList.add(`block-${dat.context}`)
div.classList.add(`block`)
div.textContent = dat.str || dat.context;
document.body.appendChild(div);
for (let arg of args) {
if (arg) div.appendChild(arg);
}
return div;
}

View file

@ -13,7 +13,7 @@ let add = async function (input, objects) {
let events = new EventTarget();
export {
export default {
on,
events,
echo,

View file

@ -1,9 +1,11 @@
//import objs from './objs.mjs';
let openers = {
'{': '}',
'[': ']',
'(': ')'
'{': '}', // function
'[': ']', // string
'(': ')', // group
// TODO: dropdowns, custom blocks
};
function parser(str, context = '(') {