diff --git a/Readme.md b/Readme.md index 3cbdba8..1682edf 100644 --- a/Readme.md +++ b/Readme.md @@ -74,8 +74,9 @@ More examples are in the 'examples' directory in the repo. ## Versions -Version 2.x is the latest stateful, streaming version of the API. It is simpler and more correct. -Version 1.3.0 was the last of the older, deprecated API. +Version 3.0 - now treats ANSI bold sequences as CSS font-weight:bold +Version 2.0 - moved to a stateful, streaming version of the API +Version 1.3 - was the last of the older, deprecated API. ## Quick Start @@ -92,7 +93,7 @@ system. #### ansi_to_html (txt) -This replaces ANSI terminal escape codes with SPAN tags that wrap the content. See the example output above. +This replaces ANSI terminal escape codes/sequences with SPAN tags that wrap the content. This function only interprets ANSI SGR (Select Graphic Rendition) codes that can be represented in HTML. For example, cursor movement codes are ignored and hidden from output. diff --git a/ansi_up.js b/ansi_up.js index 8c3d200..c2c014f 100644 --- a/ansi_up.js +++ b/ansi_up.js @@ -30,7 +30,7 @@ function rgx(tmplObj) { } var AnsiUp = (function () { function AnsiUp() { - this.VERSION = "2.0.3"; + this.VERSION = "3.0.0"; this.ansi_colors = [ [ { rgb: [0, 0, 0], class_name: "ansi-black" }, @@ -60,14 +60,14 @@ var AnsiUp = (function () { return txt; if (instance._escape_for_html) txt = instance.old_escape_for_html(txt); - if (!fragment.bright && fragment.fg === null && fragment.bg === null) + if (!fragment.bold && fragment.fg === null && fragment.bg === null) return txt; var styles = []; var classes = []; var fg = fragment.fg; var bg = fragment.bg; - if (fg === null && fragment.bright) - fg = instance.ansi_colors[1][7]; + if (fragment.bold) + styles.push('font-weight:bold'); if (!instance._use_classes) { if (fg) styles.push("color:rgb(" + fg.rgb.join(',') + ")"); @@ -98,7 +98,7 @@ var AnsiUp = (function () { class_string = " class=\"" + classes.join(' ') + "\""; if (styles.length) style_string = " style=\"" + styles.join(';') + "\""; - return "" + txt + ""; + return "" + txt + ""; }, compose: function (segments, instance) { return segments.join(""); @@ -115,7 +115,7 @@ var AnsiUp = (function () { this.setup_256_palette(); this._use_classes = false; this._escape_for_html = true; - this.bright = false; + this.bold = false; this.fg = this.bg = null; this._buffer = ''; } @@ -223,7 +223,7 @@ var AnsiUp = (function () { return this.ansi_to(txt, this.textFormatter); }; AnsiUp.prototype.with_state = function (text) { - return { bright: this.bright, fg: this.fg, bg: this.bg, text: text }; + return { bold: this.bold, fg: this.fg, bg: this.bg, text: text }; }; AnsiUp.prototype.handle_incomplete_sequences = function (chunks) { var last_chunk = chunks[chunks.length - 1]; @@ -268,13 +268,13 @@ var AnsiUp = (function () { var num = parseInt(sgr_cmd_str, 10); if (isNaN(num) || num === 0) { this.fg = this.bg = null; - this.bright = false; + this.bold = false; } else if (num === 1) { - this.bright = true; + this.bold = true; } else if (num === 22) { - this.bright = false; + this.bold = false; } else if (num === 39) { this.fg = null; @@ -283,15 +283,14 @@ var AnsiUp = (function () { this.bg = null; } else if ((num >= 30) && (num < 38)) { - var bidx = this.bright ? 1 : 0; - this.fg = this.ansi_colors[bidx][(num - 30)]; - } - else if ((num >= 90) && (num < 98)) { - this.fg = this.ansi_colors[1][(num - 90)]; + this.fg = this.ansi_colors[0][(num - 30)]; } else if ((num >= 40) && (num < 48)) { this.bg = this.ansi_colors[0][(num - 40)]; } + else if ((num >= 90) && (num < 98)) { + this.fg = this.ansi_colors[1][(num - 90)]; + } else if ((num >= 100) && (num < 108)) { this.bg = this.ansi_colors[1][(num - 100)]; } diff --git a/ansi_up.ts b/ansi_up.ts index 8998944..57ae53d 100644 --- a/ansi_up.ts +++ b/ansi_up.ts @@ -15,21 +15,21 @@ interface AU_Color // Represents the output of process_ansi(): a snapshot of the AnsiUp state machine // at a given point in time, which wraps a fragment of text. This wouuld allow deferred // processing of text fragments and colors, if ever needed. -interface TextWithData { +interface TextWithAttr { fg:AU_Color; bg:AU_Color; - bright:boolean; + bold:boolean; text:string; } // Represents an object that is responsible for generating output from parsed ANSI color // metadata and text content. interface Formatter { - // Invoked for each generated TextWithData fragment outputted by process_ansi(). - // this function is responsible for generating output for a single TextWithData + // Invoked for each generated TextWithAttr fragment outputted by process_ansi(). + // this function is responsible for generating output for a single TextWithAttr // fragment. The result of transform() will be collected into an array that will // be provided to compose(). - transform(fragment:TextWithData, instance:AnsiUp):any; + transform(fragment:TextWithAttr, instance:AnsiUp):any; // Invoked on the set of outputs from transform; the return value of this function // will be the final output of ANSI processing. @@ -51,7 +51,7 @@ function rgx(tmplObj, ...subst) { class AnsiUp { - VERSION = "2.0.3"; + VERSION = "3.0.0"; ansi_colors = [ @@ -81,7 +81,7 @@ class AnsiUp ]; htmlFormatter:Formatter = { - transform(fragment:TextWithData, instance:AnsiUp):string { + transform(fragment:TextWithAttr, instance:AnsiUp):string { let txt = fragment.text; if (txt.length === 0) @@ -91,7 +91,7 @@ class AnsiUp txt = instance.old_escape_for_html(txt); // If colors not set, default style is used - if (!fragment.bright && fragment.fg === null && fragment.bg === null) + if (!fragment.bold && fragment.fg === null && fragment.bg === null) return txt; let styles:string[] = []; @@ -100,9 +100,9 @@ class AnsiUp let fg = fragment.fg; let bg = fragment.bg; - // Handle the case where we are told to be bright, but without a color - if (fg === null && fragment.bright) - fg = instance.ansi_colors[1][7]; + // Note on bold: https://stackoverflow.com/questions/6737005/what-are-some-advantages-to-using-span-style-font-weightbold-rather-than-b?rq=1 + if (fragment.bold) + styles.push('font-weight:bold') if (!instance._use_classes) { // USE INLINE STYLES @@ -137,7 +137,7 @@ class AnsiUp if (styles.length) style_string = ` style="${styles.join(';')}"`; - return `${txt}`; + return `${txt}`; }, compose(segments:string[], instance:AnsiUp):string { @@ -146,7 +146,7 @@ class AnsiUp }; textFormatter:Formatter = { - transform(fragment:TextWithData, instance:AnsiUp):string { + transform(fragment:TextWithAttr, instance:AnsiUp):string { return fragment.text; }, @@ -161,7 +161,7 @@ class AnsiUp private fg:AU_Color; private bg:AU_Color; - private bright:boolean; + private bold:boolean; private _use_classes:boolean; private _escape_for_html; @@ -175,7 +175,7 @@ class AnsiUp this._use_classes = false; this._escape_for_html = true; - this.bright = false; + this.bold = false; this.fg = this.bg = null; this._buffer = ''; @@ -323,8 +323,8 @@ class AnsiUp return this.ansi_to(txt, this.textFormatter); } - private with_state(text:string):TextWithData { - return { bright: this.bright, fg: this.fg, bg: this.bg, text: text }; + private with_state(text:string):TextWithAttr { + return { bold: this.bold, fg: this.fg, bg: this.bg, text: text }; } private handle_incomplete_sequences(chunks:string[]):void { @@ -364,7 +364,7 @@ class AnsiUp // COMPLEX - END } - private process_ansi(block:string):TextWithData + private process_ansi(block:string):TextWithAttr { // This must only be called with a string that started with a CSI (the string split above) // The CSI must not be in the string. We consider this string to be a 'block'. @@ -424,24 +424,23 @@ class AnsiUp if (isNaN(num) || num === 0) { this.fg = this.bg = null; - this.bright = false; + this.bold = false; } else if (num === 1) { - this.bright = true; + this.bold = true; } else if (num === 22) { - this.bright = false; + this.bold = false; } else if (num === 39) { this.fg = null; } else if (num === 49) { this.bg = null; } else if ((num >= 30) && (num < 38)) { - let bidx = this.bright ? 1 : 0; - this.fg = this.ansi_colors[bidx][(num - 30)]; - } else if ((num >= 90) && (num < 98)) { - this.fg = this.ansi_colors[1][(num - 90)]; + this.fg = this.ansi_colors[0][(num - 30)]; } else if ((num >= 40) && (num < 48)) { this.bg = this.ansi_colors[0][(num - 40)]; + } else if ((num >= 90) && (num < 98)) { + this.fg = this.ansi_colors[1][(num - 90)]; } else if ((num >= 100) && (num < 108)) { - this.bg = this.ansi_colors[1][(num - 100)]; + this.bg = this.ansi_colors[1][(num - 100)]; } else if (num === 38 || num === 48) { // extended set foreground/background color diff --git a/dist/ansi_up.d.ts b/dist/ansi_up.d.ts index 1138e95..30ad684 100644 --- a/dist/ansi_up.d.ts +++ b/dist/ansi_up.d.ts @@ -2,14 +2,14 @@ export interface AU_Color { rgb: number[]; class_name: string; } -export interface TextWithData { +export interface TextWithAttr { fg: AU_Color; bg: AU_Color; - bright: boolean; + bold: boolean; text: string; } export interface Formatter { - transform(fragment: TextWithData, instance: AnsiUp): any; + transform(fragment: TextWithAttr, instance: AnsiUp): any; compose(segments: any[], instance: AnsiUp): any; } declare function rgx(tmplObj: any, ...subst: any[]): RegExp; @@ -24,7 +24,7 @@ export default class AnsiUp { private palette_256; private fg; private bg; - private bright; + private bold; private _use_classes; private _escape_for_html; private _sgr_regex; diff --git a/dist/ansi_up.js.include b/dist/ansi_up.js.include index f0d4324..30c28bf 100644 --- a/dist/ansi_up.js.include +++ b/dist/ansi_up.js.include @@ -11,7 +11,7 @@ function rgx(tmplObj) { } var AnsiUp = (function () { function AnsiUp() { - this.VERSION = "2.0.1"; + this.VERSION = "3.0.0"; this.ansi_colors = [ [ { rgb: [0, 0, 0], class_name: "ansi-black" }, @@ -41,14 +41,14 @@ var AnsiUp = (function () { return txt; if (instance._escape_for_html) txt = instance.old_escape_for_html(txt); - if (!fragment.bright && fragment.fg === null && fragment.bg === null) + if (!fragment.bold && fragment.fg === null && fragment.bg === null) return txt; var styles = []; var classes = []; var fg = fragment.fg; var bg = fragment.bg; - if (fg === null && fragment.bright) - fg = instance.ansi_colors[1][7]; + if (fragment.bold) + styles.push('font-weight:bold'); if (!instance._use_classes) { if (fg) styles.push("color:rgb(" + fg.rgb.join(',') + ")"); @@ -79,7 +79,7 @@ var AnsiUp = (function () { class_string = " class=\"" + classes.join(' ') + "\""; if (styles.length) style_string = " style=\"" + styles.join(';') + "\""; - return "" + txt + ""; + return "" + txt + ""; }, compose: function (segments, instance) { return segments.join(""); @@ -96,7 +96,7 @@ var AnsiUp = (function () { this.setup_256_palette(); this._use_classes = false; this._escape_for_html = true; - this.bright = false; + this.bold = false; this.fg = this.bg = null; this._buffer = ''; } @@ -204,7 +204,7 @@ var AnsiUp = (function () { return this.ansi_to(txt, this.textFormatter); }; AnsiUp.prototype.with_state = function (text) { - return { bright: this.bright, fg: this.fg, bg: this.bg, text: text }; + return { bold: this.bold, fg: this.fg, bg: this.bg, text: text }; }; AnsiUp.prototype.handle_incomplete_sequences = function (chunks) { var last_chunk = chunks[chunks.length - 1]; @@ -249,13 +249,13 @@ var AnsiUp = (function () { var num = parseInt(sgr_cmd_str, 10); if (isNaN(num) || num === 0) { this.fg = this.bg = null; - this.bright = false; + this.bold = false; } else if (num === 1) { - this.bright = true; + this.bold = true; } else if (num === 22) { - this.bright = false; + this.bold = false; } else if (num === 39) { this.fg = null; @@ -264,15 +264,14 @@ var AnsiUp = (function () { this.bg = null; } else if ((num >= 30) && (num < 38)) { - var bidx = this.bright ? 1 : 0; - this.fg = this.ansi_colors[bidx][(num - 30)]; - } - else if ((num >= 90) && (num < 98)) { - this.fg = this.ansi_colors[1][(num - 90)]; + this.fg = this.ansi_colors[0][(num - 30)]; } else if ((num >= 40) && (num < 48)) { this.bg = this.ansi_colors[0][(num - 40)]; } + else if ((num >= 90) && (num < 98)) { + this.fg = this.ansi_colors[1][(num - 90)]; + } else if ((num >= 100) && (num < 108)) { this.bg = this.ansi_colors[1][(num - 100)]; } diff --git a/dist/ansi_up.js.map b/dist/ansi_up.js.map index 3d561a8..dee5e27 100644 --- a/dist/ansi_up.js.map +++ b/dist/ansi_up.js.map @@ -1 +1 @@ -{"version":3,"file":"ansi_up.js","sourceRoot":"","sources":["../ansi_up.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ansi_up.js","sourceRoot":"","sources":["../ansi_up.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index ef89ad9..11a36e6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ansi_up", - "version": "2.0.3", + "version": "3.0.0", "description": "Convert ansi sequences in strings to colorful HTML", "keywords": [ "ansi", diff --git a/test/ansi_up-test.js b/test/ansi_up-test.js index 708baa2..e84450e 100644 --- a/test/ansi_up-test.js +++ b/test/ansi_up-test.js @@ -297,13 +297,14 @@ describe('ansi_up', function () { // Prove that interaction between AnsiUp and the formatter is correct and that formatters // can be completely isolated code. it("accepts an arbitrary formatter and provides ANSI information related to text segments", function() { - var attr = 1; // bright + var attr = 1; // bold var fg = 32; // green fg var bg = 41; // red bg var lines = [ "should have no color", - "\033[" + attr + ";" + fg + "m " + "should be bright green foreground" + "\033[0m", - "\033[" + attr + ";" + bg + ";" + fg + "m " + "should have bright red background with bright green foreground" + "\033[0m" + "\033[" + attr + ";" + fg + "m " + "should be bold with green foreground" + "\033[0m", + "\033[" + attr + ";" + bg + ";" + fg + "m " + "should have bold with red background with green foreground" + "\033[0m", + "\033[" + bg + ";" + fg + "m " + "should have red background with green foreground" + "\033[0m" ]; var stats = {}; @@ -318,8 +319,9 @@ describe('ansi_up', function () { stats[text] = []; } - if (data.fg) stats[text].push(data.fg.class_name); - if (data.bg) stats[text].push(data.bg.class_name); + if (data.bold) stats[text].push('bold'); + if (data.fg) stats[text].push(data.fg.class_name); + if (data.bg) stats[text].push(data.bg.class_name); } return text; @@ -335,12 +337,13 @@ describe('ansi_up', function () { var plainText = au.ansi_to(lines.join(""), statsFormatter); - plainText.should.eql("processed: should have no color, should be bright green foreground, should have bright red background with bright green foreground"); + plainText.should.eql("processed: should have no color, should be bold with green foreground, should have bold with red background with green foreground, should have red background with green foreground"); stats.should.eql({ "should have no color": [], - "should be bright green foreground": ["ansi-bright-green"], - "should have bright red background with bright green foreground": ["ansi-bright-green", "ansi-red"] + "should be bold with green foreground": ["bold", "ansi-green"], + "should have bold with red background with green foreground": ["bold", "ansi-green", "ansi-red"], + "should have red background with green foreground": ["ansi-green", "ansi-red"] }); }); }); @@ -390,14 +393,14 @@ describe('ansi_up', function () { var fg = 32; var start = "\033[" + attr + ";" + fg + "m " + attr + ";" + fg + " \033[0m"; - var expected = " " + attr + ";" + fg + " "; + var expected = " " + attr + ";" + fg + " "; var au = new AnsiUp(); var l = au.ansi_to_html(start); l.should.eql(expected); }); - it('should transform a bold-foreground to html', function () { + it('should transform a bright-foreground to html', function () { var fg = 92; var start = "\033[" + fg + "m " + fg + " \033[0m"; @@ -414,14 +417,14 @@ describe('ansi_up', function () { var bg = 42; var start = "\033[" + attr + ";" + bg + ";" + fg + "m " + attr + ";" + bg + ";" + fg + " \033[0m"; - var expected = " " + attr + ";" + bg + ";" + fg + " "; + var expected = " " + attr + ";" + bg + ";" + fg + " "; var au = new AnsiUp(); var l = au.ansi_to_html(start); l.should.eql(expected); }); - it('should transform a bold-background;foreground to html', function () { + it('should transform a bright-background;foreground to html', function () { var fg = 33; var bg = 102; var start = "\033[" + bg + ";" + fg + "m " + bg + ";" + fg + " \033[0m"; @@ -534,7 +537,7 @@ describe('ansi_up', function () { it('combination of bold and palette', function () { var start = "\033[1;38;5;171m" + "foo" + "\033[0m"; - var expected = 'foo'; + var expected = 'foo'; var au = new AnsiUp(); var l = au.ansi_to_html(start); l.should.eql(expected); @@ -542,7 +545,7 @@ describe('ansi_up', function () { it('combination of palette and bold', function () { var start = "\033[38;5;171;1m" + "foo" + "\033[0m"; - var expected = 'foo'; + var expected = 'foo'; var au = new AnsiUp(); var l = au.ansi_to_html(start); l.should.eql(expected); @@ -606,7 +609,20 @@ describe('ansi_up', function () { var fg = 32; var start = "\033[" + attr + ";" + fg + "m " + attr + ";" + fg + " \033[0m"; - var expected = " " + attr + ";" + fg + " "; + var expected = ' " + attr + ";" + fg + " "; + + var au = new AnsiUp(); + au.use_classes = true; + var l = au.ansi_to_html(start); + l.should.eql(expected); + }); + + it('should transform a bold attr;bright-foreground to html', function () { + var attr = 1; + var fg = 92; + var start = "\033[" + attr + ";" + fg + "m " + attr + ";" + fg + " \033[0m"; + + var expected = ' " + attr + ";" + fg + " "; var au = new AnsiUp(); au.use_classes = true; @@ -620,7 +636,21 @@ describe('ansi_up', function () { var bg = 42; var start = "\033[" + attr + ";" + bg + ";" + fg + "m " + attr + ";" + bg + ";" + fg + " \033[0m"; - var expected = " " + attr + ";" + bg + ";" + fg + " "; + var expected = ' " + attr + ";" + bg + ";" + fg + " "; + + var au = new AnsiUp(); + au.use_classes = true; + var l = au.ansi_to_html(start); + l.should.eql(expected); + }); + + it('should transform a bold attr;background;bright-foreground to html', function () { + var attr = 1; + var fg = 33; + var bg = 102; + var start = "\033[" + attr + ";" + bg + ";" + fg + "m " + attr + ";" + bg + ";" + fg + " \033[0m"; + + var expected = ' " + attr + ";" + bg + ";" + fg + " "; var au = new AnsiUp(); au.use_classes = true; @@ -699,7 +729,7 @@ describe('ansi_up', function () { it('combination of bold and palette', function () { var start = "\033[1;38;5;171m" + "foo" + "\033[0m"; - var expected = 'foo'; + var expected = 'foo'; var au = new AnsiUp(); au.use_classes = true; var l = au.ansi_to_html(start); @@ -708,7 +738,7 @@ describe('ansi_up', function () { it('combination of palette and bold', function () { var start = "\033[38;5;171;1m" + "foo" + "\033[0m"; - var expected = 'foo'; + var expected = 'foo'; var au = new AnsiUp(); au.use_classes = true; var l = au.ansi_to_html(start);