Skip to content

Commit 2065fc5

Browse files
committed
EmuLisp: 'line copied and factored out from 'read.
1 parent 349418d commit 2065fc5

File tree

1 file changed

+25
-22
lines changed

1 file changed

+25
-22
lines changed

emulisp/emulisp_core.js

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -860,6 +860,29 @@ CompExpr.prototype.evalTrue = function(a, b) {
860860

861861
function lispFnOrder(a, b) { return cst.compExprArr[0].evalTrue(a, b) ? -1 : 1; }
862862

863+
function emuprompt(c) { // No support (yet) for the two parameters (non-split chars and comment char).
864+
if (emuEnv() == 'nodejs') {
865+
var readlinesync = require('readline-sync');
866+
readlinesync.setPrompt("");
867+
_stdPrompt = readlinesync.prompt;
868+
} else {
869+
if (typeof stdPrompt != "undefined") {
870+
var _stdPrompt = stdPrompt;
871+
} else {
872+
var _stdPrompt = window.prompt;
873+
}
874+
}
875+
var user_input = _stdPrompt();
876+
if (emuEnv() == 'nodejs') {
877+
readlinesync.setPrompt(": ");
878+
}
879+
if (user_input === "") {
880+
return NIL;
881+
} else {
882+
return newTransSymbol(user_input);
883+
}
884+
}
885+
863886
var coreFunctions = {
864887
"and": function(c) { var v = NIL; while (c instanceof Cell) { v = evalLisp(c.car);
865888
if (!aTrue(v)) return NIL; c = c.cdr; } return v;
@@ -1169,6 +1192,7 @@ var coreFunctions = {
11691192
while (symArr.length > 0) { symArr.pop().popValue(); }
11701193
return v;
11711194
},
1195+
"line": emuprompt,
11721196
"link": linkc,
11731197
"list": function(c) { return (c !== NIL) ? evalArgs(c) : new Cell(NIL, NIL); },
11741198
"load": function(c) { var r = NIL;
@@ -1319,28 +1343,7 @@ var coreFunctions = {
13191343
var r = new List(); do { r.link(n); n = new Number(n + s); } while ((s > 0) ? (n <= n2) : (n >= n2));
13201344
return r.list;
13211345
},
1322-
"read": function(c) { // No support (yet) for the two parameters (non-split chars and comment char).
1323-
if (emuEnv() == 'nodejs') {
1324-
var readlinesync = require('readline-sync');
1325-
readlinesync.setPrompt("");
1326-
_stdPrompt = readlinesync.prompt;
1327-
} else {
1328-
if (typeof stdPrompt != "undefined") {
1329-
var _stdPrompt = stdPrompt;
1330-
} else {
1331-
var _stdPrompt = window.prompt;
1332-
}
1333-
}
1334-
var user_input = _stdPrompt();
1335-
if (emuEnv() == 'nodejs') {
1336-
readlinesync.setPrompt(": ");
1337-
}
1338-
if (user_input === "") {
1339-
return NIL;
1340-
} else {
1341-
return newTransSymbol(user_input);
1342-
}
1343-
},
1346+
"read": emuprompt,
13441347
"rest": function(c) { return cst.evFrames.car.cdr; },
13451348
"reverse": function(c) { var lst = evalLisp(c.car), r = NIL;
13461349
if (!(lst instanceof Cell)) return NIL;

0 commit comments

Comments
 (0)