Improve repl regexp handling

- handle regexp with flags in repl completion
- group config_jscalc customisations
This commit is contained in:
Charlie Gordon 2024-03-02 14:36:44 +01:00
parent 8180d3dd87
commit a78d2cbf7c
1 changed files with 35 additions and 37 deletions

72
repl.js
View File

@ -67,38 +67,20 @@ import * as os from "os";
bright_white: "\x1b[37;1m", bright_white: "\x1b[37;1m",
}; };
var styles; var styles = {
if (config_numcalc) { 'default': 'bright_green',
styles = { 'comment': 'white',
'default': 'black', 'string': 'bright_cyan',
'comment': 'white', 'regex': 'cyan',
'string': 'green', 'number': 'green',
'regex': 'cyan', 'keyword': 'bright_white',
'number': 'green', 'function': 'bright_yellow',
'keyword': 'blue', 'type': 'bright_magenta',
'function': 'gray', 'identifier': 'bright_green',
'type': 'bright_magenta', 'error': 'red',
'identifier': 'yellow', 'result': 'bright_white',
'error': 'bright_red', 'error_msg': 'bright_red',
'result': 'black', };
'error_msg': 'bright_red',
};
} else {
styles = {
'default': 'bright_green',
'comment': 'white',
'string': 'bright_cyan',
'regex': 'cyan',
'number': 'green',
'keyword': 'bright_white',
'function': 'bright_yellow',
'type': 'bright_magenta',
'identifier': 'bright_green',
'error': 'red',
'result': 'bright_white',
'error_msg': 'bright_red',
};
}
var history = []; var history = [];
var clip_board = ""; var clip_board = "";
@ -109,11 +91,7 @@ import * as os from "os";
var pstate = ""; var pstate = "";
var prompt = ""; var prompt = "";
var plen = 0; var plen = 0;
var ps1; var ps1 = "qjs > ";
if (config_numcalc)
ps1 = "> ";
else
ps1 = "qjs > ";
var ps2 = " ... "; var ps2 = " ... ";
var utf8 = true; var utf8 = true;
var show_time = false; var show_time = false;
@ -613,6 +591,9 @@ import * as os from "os";
base = get_context_word(line, pos); base = get_context_word(line, pos);
if (["true", "false", "null", "this"].includes(base) || !isNaN(+base)) if (["true", "false", "null", "this"].includes(base) || !isNaN(+base))
return eval(base); return eval(base);
// Check if `base` is a set of regexp flags
if (pos - base.length >= 3 && line[pos - base.length - 1] === '/')
return new RegExp('', base);
obj = get_context_object(line, pos - base.length); obj = get_context_object(line, pos - base.length);
if (obj === null || obj === void 0) if (obj === null || obj === void 0)
return obj; return obj;
@ -1181,6 +1162,23 @@ import * as os from "os";
} }
if (config_numcalc) { if (config_numcalc) {
styles = {
'default': 'black',
'comment': 'white',
'string': 'green',
'regex': 'cyan',
'number': 'green',
'keyword': 'blue',
'function': 'gray',
'type': 'bright_magenta',
'identifier': 'yellow',
'error': 'bright_red',
'result': 'black',
'error_msg': 'bright_red',
};
ps1 = "> ";
/* called by the GUI */ /* called by the GUI */
g.execCmd = function (cmd) { g.execCmd = function (cmd) {
switch(cmd) { switch(cmd) {