diff --git a/awx/ui/client/src/job-results/parse-stdout.service.js b/awx/ui/client/src/job-results/parse-stdout.service.js index 35c15cb000..a60ba2e5b1 100644 --- a/awx/ui/client/src/job-results/parse-stdout.service.js +++ b/awx/ui/client/src/job-results/parse-stdout.service.js @@ -9,7 +9,6 @@ export default ['$log', 'moment', 'i18n', function($log, moment, i18n){ // parses stdout string from api and formats various codes to the // correct dom structure prettify: function(line, unstyled){ - line = line .replace(/&/g, "&") .replace(/'); - line = line.replace(/\[0;30m/g, ''); - line = line.replace(/\[1;30m/g, ''); - line = line.replace(/\[1;31m/g, ''); - line = line.replace(/\[0;31m/g, ''); - line = line.replace(/\[1;31m/g, ''); - line = line.replace(/\[0;31m/g, ''); - line = line.replace(/\[0;32m/g, ''); - line = line.replace(/\[0;32m=/g, ''); - line = line.replace(/\[0;32m1/g, ''); - line = line.replace(/\[0;33m/g, ''); - line = line.replace(/\[0;34m/g, ''); - line = line.replace(/\[0;35m/g, ''); - line = line.replace(/\[1;35m/g, ''); - line = line.replace(/\[0;36m/g, ''); + /* jshint ignore:start */ + line = line.replace(/(|)\[1;im/g, ''); + line = line.replace(/(|)\[0;30m/g, ''); + line = line.replace(/(|)\[1;30m/g, ''); + line = line.replace(/(|)\[[0,1];31m/g, ''); + line = line.replace(/(|)\[0;32m(=|)/g, ''); + line = line.replace(/(|)\[0;32m1/g, ''); + line = line.replace(/(|)\[0;33m/g, ''); + line = line.replace(/(|)\[0;34m/g, ''); + line = line.replace(/(|)\[[0,1];35m/g, ''); + line = line.replace(/(|)\[0;36m/g, ''); line = line.replace(/()\s/g, '$1'); //end span - line = line.replace(/\[0m/g, ''); + line = line.replace(/(|)\[0m/g, ''); + /* jshint ignore:end */ } else { // For the host event modal in the standard out tab, // the styling isn't necessary line = line.replace(/u001b/g, ''); // ansi classes - line = line.replace(/\[0;30m/g, ''); - line = line.replace(/\[1;30m/g, ''); - line = line.replace(/\[1;31m/g, ''); - line = line.replace(/\[0;31m/g, ''); - line = line.replace(/\[0;32m/g, ''); - line = line.replace(/\[0;32m=/g, ''); - line = line.replace(/\[0;32m1/g, ''); - line = line.replace(/\[0;33m/g, ''); - line = line.replace(/\[0;34m/g, ''); - line = line.replace(/\[0;35m/g, ''); - line = line.replace(/\[0;36m/g, ''); + /* jshint ignore:start */ + line = line.replace(/(|)\[[0,1];3[0-9]m(1|=|)/g, ''); line = line.replace(/()\s/g, '$1'); //end span - line = line.replace(/\[0m/g, ''); + line = line.replace(/(|)\[0m/g, ''); + /* jshint ignore:end */ } return line; diff --git a/awx/ui/tests/spec/job-results/parse-stdout.service-test.js b/awx/ui/tests/spec/job-results/parse-stdout.service-test.js index 80268a16d9..86441c1ffa 100644 --- a/awx/ui/tests/spec/job-results/parse-stdout.service-test.js +++ b/awx/ui/tests/spec/job-results/parse-stdout.service-test.js @@ -21,14 +21,14 @@ describe('parseStdoutService', () => { describe('prettify()', () => { it('returns lines of stdout with styling classes', () => { let line = "[0;32mok: [host-00]", - styledLine = 'ok: [host-00]'; + styledLine = 'ok: [host-00]'; expect(parseStdoutService.prettify(line)).toBe(styledLine); }); it('can return lines of stdout without styling classes', () => { - let line = "[0;32mok: [host-00]", + let line = "[0;32mok: [host-00][0m", unstyled = "unstyled", - unstyledLine = 'ok: [host-00]'; + unstyledLine = 'ok: [host-00]'; expect(parseStdoutService.prettify(line, unstyled)).toBe(unstyledLine); });