git » jacl.git » commit 8bd3cb2

move safeRead to separate function again

author Alan Dipert
2019-08-28 12:56:29 UTC
committer Alan Dipert
2019-08-28 12:56:29 UTC
parent 8c41c77f2ed40098e72b21303d1771d0dda4c5cc

move safeRead to separate function again

jacl-tests.js +4 -0
jacl.js +17 -16

diff --git a/jacl-tests.js b/jacl-tests.js
index 56bee98..b7dffe1 100644
--- a/jacl-tests.js
+++ b/jacl-tests.js
@@ -56,6 +56,10 @@ QUnit.test('Symbols', async is => {
   is.strictEqual(sym.name, 'SOME-LIL-KW', 'kw name');
   is.strictEqual(sym.packageName, 'KEYWORD', 'kw package');
 
+  //sym = await read1('#:foop ');
+  //is.strictEqual(sym.name, 'FOOP', 'uninterned sym has a name');
+  //is.strictEqual(sym.packageName, null, 'uninterned packageName is null');
+
 });
 
 QUnit.test('Conses', async is => {
diff --git a/jacl.js b/jacl.js
index 6dc1a78..3ea7850 100644
--- a/jacl.js
+++ b/jacl.js
@@ -237,9 +237,22 @@ class Token extends String {
   }
 }
 
+const safeRead = async rdr => {
+  var x;
+  try {
+    x = await rdr.read();
+  } catch (e) {
+    if (e instanceof DotError || e instanceof CloseParenError) {
+      return e;
+    }
+    throw e;
+  }
+  return x;
+}
+
 const readList = async stream => {
   const rdr = new Reader(stream),
-        x   = await rdr.safeRead();
+        x   = await safeRead(rdr);
 
   if (x instanceof DotError)
     throw new Error(`Nothing before . in list`);
@@ -248,14 +261,14 @@ const readList = async stream => {
     return new Values(null);
 
   const car   = x,
-        after = await rdr.safeRead();
+        after = await safeRead(rdr);
 
   if (after instanceof DotError) {
-    const y = await rdr.safeRead();
+    const y = await safeRead(rdr);
     if (y instanceof Error)
       throw new Error(`Nothing after . in list`);
     const cons = new Cons(car, y);
-    if ((await rdr.safeRead()) instanceof CloseParenError) {
+    if ((await safeRead(rdr)) instanceof CloseParenError) {
       return new Values(cons);
     } else {
       throw new Error(`More than one object after . in list`);
@@ -362,18 +375,6 @@ class Reader {
   static of(stream) {
     return new Reader(stream);
   }
-  async safeRead() {
-    var x;
-    try {
-      x = await this.read();
-    } catch (e) {
-      if (e instanceof DotError || e instanceof CloseParenError) {
-        return e;
-      }
-      throw e;
-    }
-    return x;
-  }
   async read() {
     let macroFun;
     for await(const x of this.stream) {