diff options
| author | Brian Cully <bjc@spork.org> | 2025-08-23 13:05:07 -0400 |
|---|---|---|
| committer | Brian Cully <bjc@spork.org> | 2025-08-23 13:05:07 -0400 |
| commit | 0753ea2b9e10b0f5030b05e84cd8490cc9ec7b34 (patch) | |
| tree | 78750e55c5839ffb9c703a3848b04718e8e11b61 /main.mjs | |
| parent | 8ce858ce7a03090b3b2a1310d17b1206f097637f (diff) | |
| download | automathon-0753ea2b9e10b0f5030b05e84cd8490cc9ec7b34.tar.gz automathon-0753ea2b9e10b0f5030b05e84cd8490cc9ec7b34.zip | |
highlight running code
Diffstat (limited to 'main.mjs')
| -rw-r--r-- | main.mjs | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -14,6 +14,12 @@ function wordlistElts(wordlist) { }) } +function selectorForIP(word, offset) { + const sel = `#wordlist x-bytecode[x-index='${word}'] x-op[x-index='${offset}']`; + console.debug('using sel', sel); + return sel; +} + async function loaded() { console.debug('running init'); const mod = await init(); @@ -39,10 +45,25 @@ async function loaded() { if (res) { const wordlist = wordlistElts(interp.wordlist()); wordlist.forEach(elt => wordlistContainer.appendChild(elt)); + const sel = selectorForIP(0, 0); + document.querySelectorAll(sel).forEach(e => { + e.classList.add('ip') + }); } }; document.querySelector('#tick').onclick = e => { console.debug('tick clicked', e); + interp.tick(); + console.info('callstack', interp.callstack()); + console.info('stack', interp.stack()); + + const { word, offset } = interp.ip(); + console.info('ip', word, offset); + document.querySelectorAll('#wordlist .ip').forEach(e => e.classList.remove('ip')); + const sel = selectorForIP(word, offset); + document.querySelectorAll(sel).forEach(e => { + e.classList.add('ip') + }); }; document.querySelector('#run').onclick = e => { console.debug('run clicked', e); |
