git » jacl.git » commit 2a7f4d1

Use StringStream in more places

author Alan Dipert
2020-01-17 05:04:13 UTC
committer Alan Dipert
2020-01-17 05:04:13 UTC
parent a96e4864c0502f1a50efdea51231d7513e508fd6

Use StringStream in more places

jacl-tests.js +2 -24
jacl.js +3 -13

diff --git a/jacl-tests.js b/jacl-tests.js
index 48370fc..7e15431 100644
--- a/jacl-tests.js
+++ b/jacl-tests.js
@@ -3,24 +3,11 @@ QUnit.config.autostart = false;
 
 QUnit.module('Reader');
 
-const makeRead1 = (rdr, it) => {
-  return async (str, timeout = true) => {
-    const done = timeout ? it.async() : null;
-    rdr.stream.writeEach(str);
-    const obj = await rdr.read();
-    if (done) done();
-    return obj;
-  }
-};
-
-const freshRdr = (is) => {
-  const rdr = new Reader(new BufferedStream());
-  return [rdr, makeRead1(rdr, is)];
+const read1 = async s => {
+  return (new Reader(new StringStream(s))).read();
 }
 
 QUnit.test('Integers', async is => {
-  var [rdr, read1] = freshRdr(is);
-
   is.strictEqual(await read1('123 '), 123, 'single integer');
   is.strictEqual(await read1('+9912 '), 9912, 'integer with leading +');
   is.strictEqual(await read1('0 '), 0, 'zero');
@@ -29,7 +16,6 @@ QUnit.test('Integers', async is => {
 });
 
 QUnit.test('Symbols', async is => {
-  var [rdr, read1] = freshRdr(is);
   var sym;
 
   sym = await read1('somesym ');
@@ -55,7 +41,6 @@ QUnit.test('Symbols', async is => {
     /Symbol 'OMG' not found in package 'TEST-PACKAGE1'/,
     'non-existent symbol not found'
   );
-  [rdr, read1] = freshRdr(is);
 
   testPkg1.intern("some symbol")
   sym = await read1('|TEST-PACKAGE1::some symbol| ');
@@ -79,14 +64,12 @@ QUnit.test('Symbols', async is => {
     /Symbol 'some symbol' not external in package 'TEST-PACKAGE1'/,
     'private symbol reference throws'
   );
-  [rdr, read1] = freshRdr(is);
 
   is.rejects(
     read1('test-package1:sym123 ', false),
     /Symbol 'SYM123' not found in package 'TEST-PACKAGE1'/,
     'non-existent qualified symbol throws'
   );
-  [rdr, read1] = freshRdr(is);
 
   sym = await read1(':some-lil-kw ');
   is.strictEqual(sym.name, 'SOME-LIL-KW', 'kw name');
@@ -115,7 +98,6 @@ QUnit.test('Symbols', async is => {
 });
 
 QUnit.test('Sharpsign', async is => {
-  var [rdr, read1] = freshRdr(is);
   var sym;
 
   sym = await read1('#:foop ');
@@ -127,7 +109,6 @@ QUnit.test('Sharpsign', async is => {
 });
 
 QUnit.test('Conses', async is => {
-  var [rdr, read1] = freshRdr(is);
   var cons;
 
   cons = await read1('()');
@@ -146,21 +127,18 @@ QUnit.test('Conses', async is => {
     /Nothing after . in list/,
     'nothing after dot'
   );
-  [rdr, read1] = freshRdr(is);
 
   is.rejects(
     read1('( . t)', false),
     /Nothing before . in list/,
     'nothing before dot'
   );
-  [rdr, read1] = freshRdr(is);
 
   is.rejects(
     read1('(1 . 2 3)', false),
     /More than one object after . in list/,
     'more than one object after dot'
   );
-  [rdr, read1] = freshRdr(is);
 
   cons = await read1('(1 2 3 4)');
   is.deepEqual(Array.from(cons), [1,2,3,4], 'convert to array');
diff --git a/jacl.js b/jacl.js
index 1008225..f85a1fe 100644
--- a/jacl.js
+++ b/jacl.js
@@ -403,7 +403,6 @@ class StringStream {
 
 class BufferedStream {
   constructor() {
-    console.log("omg");
     this.buf = [];
     this.resolveQueue = [];
   }
@@ -1960,22 +1959,14 @@ const startRepl = async () => {
   }
 };
 
-const loadLispScripts = async (profile = false) => {
+const loadLispScripts = async () => {
   for (let i = 0; i < document.head.childNodes.length; i++) {
     const child = document.head.childNodes[i];
     if (child.nodeName === 'SCRIPT' && child.src.endsWith('.lisp')) {
       const code = await (await fetch(child.src)).text();
       const start = new Date();
-      if (profile) console.profile(child.src);
-
       const ss = new StringStream(code);
       const rdr = new Reader(ss);
-
-      //const ss = new BufferedStream();
-      //const rdr = new Reader(ss);
-      //ss.writeEach(code);
-      //ss.write(EOF);
-
       for await(const obj of rdr) {
         if (obj === EOF) break;
         const node = analyze(emptyEnv, null, obj);
@@ -1984,14 +1975,13 @@ const loadLispScripts = async (profile = false) => {
         eval(sb.toString());
       }
       console.log(`;Loaded ${child.src} in ${(new Date())-start} ms`);
-      if (profile) console.profileEnd(child.src);
     }
   }
 };
 
 window.addEventListener('load', async () => {
-  await loadLispScripts(false);
-  //QUnit.start();
+  await loadLispScripts();
+  QUnit.start();
   startRepl();
 });