1
1
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:
Joel Martin 2017-02-11 13:38:38 -06:00
parent e5faf623bd
commit 186471a32c

View File

@ -1 +0,0 @@
../js/node_readline.js

46
miniMAL/node_readline.js Normal file
View 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;