1 # IMPORTANT: choose one
2 RL_LIB = "libreadline" # NOTE: libreadline is GPL
5 HISTORY_FILE = require('path').join(process.env.HOME, '.mal-history')
7 rlwrap = {} # namespace for this module in web context
9 ffi = require('ffi-napi')
12 rllib = ffi.Library(RL_LIB, {
13 'readline': ['string', ['string']],
14 'add_history': ['int', ['string']]})
16 rl_history_loaded = false
18 exports.readline = rlwrap.readline = (prompt = 'user> ') ->
20 rl_history_loaded = true
22 if fs.existsSync(HISTORY_FILE)
23 lines = fs.readFileSync(HISTORY_FILE).toString().split("\n");
26 lines = lines[Math.max(lines.length - 2000, 0)..]
27 rllib.add_history(line) for line in lines when line != ""
29 line = rllib.readline prompt
31 rllib.add_history line
33 fs.appendFileSync HISTORY_FILE, line + "\n"