mirror of
https://github.com/kanaka/mal.git
synced 2024-09-20 01:57:09 +03:00
miniMAL: bring over node_readline.js to fix build
- Node tries to find node_modules subdirectory (to load ffi from) in the target of the symlink. I.e. ../js/node_modules
This commit is contained in:
parent
e5faf623bd
commit
186471a32c
@ -1 +0,0 @@
|
||||
../js/node_readline.js
|
46
miniMAL/node_readline.js
Normal file
46
miniMAL/node_readline.js
Normal file
@ -0,0 +1,46 @@
|
||||
// IMPORTANT: choose one
|
||||
var RL_LIB = "libreadline"; // NOTE: libreadline is GPL
|
||||
//var RL_LIB = "libedit";
|
||||
|
||||
var HISTORY_FILE = require('path').join(process.env.HOME, '.mal-history');
|
||||
|
||||
var rlwrap = {}; // namespace for this module in web context
|
||||
|
||||
var ffi = require('ffi'),
|
||||
fs = require('fs');
|
||||
|
||||
var rllib = ffi.Library(RL_LIB, {
|
||||
'readline': [ 'string', [ 'string' ] ],
|
||||
'add_history': [ 'int', [ 'string' ] ]});
|
||||
|
||||
var rl_history_loaded = false;
|
||||
|
||||
exports.readline = rlwrap.readline = function(prompt) {
|
||||
prompt = typeof prompt !== 'undefined' ? prompt : "user> ";
|
||||
|
||||
if (!rl_history_loaded) {
|
||||
rl_history_loaded = true;
|
||||
var lines = [];
|
||||
if (fs.existsSync(HISTORY_FILE)) {
|
||||
lines = fs.readFileSync(HISTORY_FILE).toString().split("\n");
|
||||
}
|
||||
// Max of 2000 lines
|
||||
lines = lines.slice(Math.max(lines.length - 2000, 0));
|
||||
for (var i=0; i<lines.length; i++) {
|
||||
if (lines[i]) { rllib.add_history(lines[i]); }
|
||||
}
|
||||
}
|
||||
|
||||
var line = rllib.readline(prompt);
|
||||
if (line) {
|
||||
rllib.add_history(line);
|
||||
try {
|
||||
fs.appendFileSync(HISTORY_FILE, line + "\n");
|
||||
} catch (exc) {
|
||||
// ignored
|
||||
}
|
||||
}
|
||||
|
||||
return line;
|
||||
};
|
||||
var readline = exports;
|
Loading…
Reference in New Issue
Block a user