Skip to content

Commit

Permalink
R: remove ANSI escapes from output, and carriage returns from input
Browse files Browse the repository at this point in the history
  • Loading branch information
christianp committed Nov 8, 2022
1 parent cb175eb commit 2f0d909
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions programming.js
Expand Up @@ -5,6 +5,10 @@
*/
Numbas.addExtension('programming', ['display', 'util', 'jme'], function(programming) {

const remove_ansi_escapes = programming.remove_ansi_escapes = function(str) {
return str.replace(/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g,'');
}

/////////////////////////// PREAMBLE

programming.webR_url = 'https://cdn.jsdelivr.net/gh/georgestagg/webR@452ae1637dfdd65c9a5f462fff439022d833f8f9/dist/';
Expand Down Expand Up @@ -545,19 +549,20 @@ Numbas.addExtension('programming', ['display', 'util', 'jme'], function(programm
* @returns {string}
*/
last_stdout_line() {
return this.buffers.stdout.length == 0 ? '' : this.buffers.stdout[this.buffers.stdout.length-1];
return remove_ansi_escapes(this.buffers.stdout.length == 0 ? '' : this.buffers.stdout[this.buffers.stdout.length-1]);
}

get stdout() {
return this.buffers.stdout.join('\n');
return remove_ansi_escapes(this.buffers.stdout.join('\n'));
}

get stderr() {
return this.buffers.stderr.join('\n');
return remove_ansi_escapes(this.buffers.stderr.join('\n'));
}

run_code(code, session) {
if(session !== undefined) {
code = code.replace(/\r/g,'');
code = `with(${this.namespace_name(session.namespace_id)}, {\n${code}\n})`;
}

Expand Down

0 comments on commit 2f0d909

Please sign in to comment.