diff --git a/Makefile b/Makefile index a624279..0136cf2 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION=0.2.2 +VERSION=0.3.0 CD=cd CAT=cat NPM=npm diff --git a/dist/ascidec.min.js b/dist/ascidec.min.js index 51e1324..7797e6c 100644 --- a/dist/ascidec.min.js +++ b/dist/ascidec.min.js @@ -1,13 +1,13 @@ /**@license - * ▄████████ ███▄▄▄▄ ▄████████ ▄█ ████████▄ ▄████████ ▄████████ - * ███ ███ ███▀▀▀██▄ ███ ███ ███ ███ ▀███ ███ ███ ███ ███ - * ███ ███ ███ ███ ███ █▀ ███▌ ███ ███ ███ █▀ ███ █▀ - * ███ ███ ███ ███ ███ ███▌ ███ ███ ▄███▄▄▄ ███ + * ▄████████ ███▄▄▄▄ ▄████████ ▄█ ████████▄ ▄████████ ▄████████ + * ███ ███ ███▀▀▀██▄ ███ ███ ███ ███ ▀███ ███ ███ ███ ███ + * ███ ███ ███ ███ ███ █▀ ███▌ ███ ███ ███ █▀ ███ █▀ + * ███ ███ ███ ███ ███ ███▌ ███ ███ ▄███▄▄▄ ███ * ▀███████████ ███ ███ ▀███████████ ███▌ ███ ███ ▀▀███▀▀▀ ███ - * ███ ███ ███ ███ ███ ███ ███ ███ ███ █▄ ███ █▄ - * ███ ███ ███ ███ ▄█ ███ ███ ███ ▄███ ███ ███ ███ ███ - * ███ █▀ ▀█ █▀ ▄████████▀ █▀ ████████▀ ██████████ ████████▀ - * v. 0.2.2 + * ███ ███ ███ ███ ███ ███ ███ ███ ███ █▄ ███ █▄ + * ███ ███ ███ ███ ▄█ ███ ███ ███ ▄███ ███ ███ ███ ███ + * ███ █▀ ▀█ █▀ ▄████████▀ █▀ ████████▀ ██████████ ████████▀ + * v. 0.3.0 * * Copyright (c) 2018-2019 Jakub T. Jankiewicz * Released under the MIT license @@ -15,5 +15,5 @@ * Based on jQuery Terminal's unix formatting * */ -(function(F){var e=typeof window!=="undefined"?window:global;if(typeof define==="function"&&define.amd){define([],F)}else if(typeof module==="object"&&module.exports){module.exports=F()}else{e.ansi=F()}})(function(r){var F="[^\\x08]|[\\r\\n]{2}|&[^;]+;";var d=new RegExp("^("+F+")?\\x08");var p=new RegExp("^(?:("+F+")?\\x08(_|\\1)|"+"(_)\\x08("+F+"))");var b=/^(\r\n|\n\r|\r|\n)/;var t=/[^\r\n]+\r\x1B\[K/g;function n(i,F){var c=[];var v;var h=0;var g=[];function e(F,t){var e="";var r=0;var n;h=0;function i(F,e,r){if(FF.index){if(--h<=0){i(F.index,"",F.string,2);e+=F.string}}else{c.unshift(F)}})}var u=A.match(b);e+=u[1];a+=u[1].length-1}else{if(g.length){var o=g[0];if(a===o){g.shift()}if(a>=o){h++}}if(c.length){if(a>f.index&&f.overtyping){c.shift();i(f.index,"",f.string);r++;if(f.string===F[a]){e+=F[a]+"￱";continue}else if(f.string==="_"||F[a]==="_"){var s;if(f.string==="_"){s=F[a]}else{s=f.string}e+=s+"￲";continue}}}e+=F[a]}}return e}var r=false;F=F.replace(t,"");while(F.match(/\x08/)||c.length){F=e(F,v);if(r){break}if(!F.match(/\x08/)){r=true}}function n(F,n,t){var e=new RegExp("((:?."+n+")+)","g");return F.replace(e,function(F,e){var r=new RegExp(n,"g");return i(t,null,null,e.replace(r,""))})}if(typeof i==="function"){F=n(F,"￱",{bold:true});F=n(F,"￲",{underline:true})}return F}var w={normal:{black:"#000",red:"#A00",green:"#008400",yellow:"#A50",blue:"#00A",magenta:"#A0A",cyan:"#0AA",white:"#AAA"},faited:{black:"#000",red:"#640000",green:"#006100",yellow:"#737300",blue:"#000087",magenta:"#650065",cyan:"#008787",white:"#818181"},bold:{black:"#444",red:"#F55",green:"#44D544",yellow:"#FF5",blue:"#55F",magenta:"#F5F",cyan:"#5FF",white:"#FFF"},palette:["#000000","#AA0000","#00AA00","#AA5500","#0000AA","#AA00AA","#00AAAA","#AAAAAA","#555555","#FF5555","#55FF55","#FFFF55","#5555FF","#FF55FF","#55FFFF","#FFFFFF","#000000","#00005F","#000087","#0000AF","#0000D7","#0000FF","#005F00","#005F5F","#005F87","#005FAF","#005FD7","#005FFF","#008700","#00875F","#008787","#0087AF","#0087D7","#0087FF","#00AF00","#00AF5F","#00AF87","#00AFAF","#00AFD7","#00AFFF","#00D700","#00D75F","#00D787","#00D7AF","#00D7D7","#00D7FF","#00FF00","#00FF5F","#00FF87","#00FFAF","#00FFD7","#00FFFF","#5F0000","#5F005F","#5F0087","#5F00AF","#5F00D7","#5F00FF","#5F5F00","#5F5F5F","#5F5F87","#5F5FAF","#5F5FD7","#5F5FFF","#5F8700","#5F875F","#5F8787","#5F87AF","#5F87D7","#5F87FF","#5FAF00","#5FAF5F","#5FAF87","#5FAFAF","#5FAFD7","#5FAFFF","#5FD700","#5FD75F","#5FD787","#5FD7AF","#5FD7D7","#5FD7FF","#5FFF00","#5FFF5F","#5FFF87","#5FFFAF","#5FFFD7","#5FFFFF","#870000","#87005F","#870087","#8700AF","#8700D7","#8700FF","#875F00","#875F5F","#875F87","#875FAF","#875FD7","#875FFF","#878700","#87875F","#878787","#8787AF","#8787D7","#8787FF","#87AF00","#87AF5F","#87AF87","#87AFAF","#87AFD7","#87AFFF","#87D700","#87D75F","#87D787","#87D7AF","#87D7D7","#87D7FF","#87FF00","#87FF5F","#87FF87","#87FFAF","#87FFD7","#87FFFF","#AF0000","#AF005F","#AF0087","#AF00AF","#AF00D7","#AF00FF","#AF5F00","#AF5F5F","#AF5F87","#AF5FAF","#AF5FD7","#AF5FFF","#AF8700","#AF875F","#AF8787","#AF87AF","#AF87D7","#AF87FF","#AFAF00","#AFAF5F","#AFAF87","#AFAFAF","#AFAFD7","#AFAFFF","#AFD700","#AFD75F","#AFD787","#AFD7AF","#AFD7D7","#AFD7FF","#AFFF00","#AFFF5F","#AFFF87","#AFFFAF","#AFFFD7","#AFFFFF","#D70000","#D7005F","#D70087","#D700AF","#D700D7","#D700FF","#D75F00","#D75F5F","#D75F87","#D75FAF","#D75FD7","#D75FFF","#D78700","#D7875F","#D78787","#D787AF","#D787D7","#D787FF","#D7AF00","#D7AF5F","#D7AF87","#D7AFAF","#D7AFD7","#D7AFFF","#D7D700","#D7D75F","#D7D787","#D7D7AF","#D7D7D7","#D7D7FF","#D7FF00","#D7FF5F","#D7FF87","#D7FFAF","#D7FFD7","#D7FFFF","#FF0000","#FF005F","#FF0087","#FF00AF","#FF00D7","#FF00FF","#FF5F00","#FF5F5F","#FF5F87","#FF5FAF","#FF5FD7","#FF5FFF","#FF8700","#FF875F","#FF8787","#FF87AF","#FF87D7","#FF87FF","#FFAF00","#FFAF5F","#FFAF87","#FFAFAF","#FFAFD7","#FFAFFF","#FFD700","#FFD75F","#FFD787","#FFD7AF","#FFD7D7","#FFD7FF","#FFFF00","#FFFF5F","#FFFF87","#FFFFAF","#FFFFD7","#FFFFFF","#080808","#121212","#1C1C1C","#262626","#303030","#3A3A3A","#444444","#4E4E4E","#585858","#626262","#6C6C6C","#767676","#808080","#8A8A8A","#949494","#9E9E9E","#A8A8A8","#B2B2B2","#BCBCBC","#C6C6C6","#D0D0D0","#DADADA","#E4E4E4","#EEEEEE"]};var i=function(){var x={30:"black",31:"red",32:"green",33:"yellow",34:"blue",35:"magenta",36:"cyan",37:"white",39:"inherit"};var y={40:"black",41:"red",42:"green",43:"yellow",44:"blue",45:"magenta",46:"cyan",47:"white",49:"transparent"};function s(F,e){var r=F.split(";");var n;var t=[];var i="";var a="";var A=-1;var l=false;var f=false;var D=false;var u=w.palette;function o(F){switch(F){case 0:Object.keys(e).forEach(function(F){delete e[F]});break;case 1:t.bold=e.bold=true;e.faited=false;break;case 4:t.underline=e.underline=true;break;case 3:t.italic=e.italic=true;break;case 5:if(l||f){D=true}break;case 38:l=true;break;case 48:f=true;break;case 2:if(l||f){A=0}else{e.faited=true;e.bold=false}break;case 7:e.reverse=true;break;default:if(r[1]!=="5"){if(x[F]){i=x[F]}if(y[F]){a=y[F]}}}}function s(){if(l){if(!i){i="#"}if(i.length<7){i+=("0"+n.toString(16)).slice(-2)}}if(f){if(!a){a="#"}if(a.length<7){a+=("0"+n.toString(16)).slice(-2)}}if(A===2){A=-1}else{A++}}function c(){return D&&(f&&!a||l&&!i)}function v(){if(l&&u[n]&&!i){i=u[n]}if(f&&u[n]&&!a){a=u[n]}D=false}for(var h in r){if(r.hasOwnProperty(h)){n=parseInt(r[h],10);if(A>-1){s()}else if(c()){v()}else{o(n)}}}if(e.reverse){if(i||a){var g=a;a=i;i=g}else{i="black";a="white"}}i=i||e.color;a=a||e.background;e.background=a;e.color=i;var d,p,b;if(e.bold){d=w.bold}else if(e.faited){d=w.faited}else{d=w.normal}if(typeof i!=="undefined"){if(i.match(/^#/)){p=i}else if(i==="inherit"){p=i}else{p=d[i]}}if(typeof a!=="undefined"){if(a.match(/^#/)){b=a}else if(a==="transparent"){b=a}else{b=w.normal[a]}}var m=[t,p,b];return m}return function F(n,e){var r={};var A=/(\x1B\[[0-9;]*[A-Za-z])/g;var t=/(.*)\r?\n\x1b\[1A\x1b\[([0-9]+)C/g;e=e.replace(t,function(F,e,r){r=parseInt(r,10);var n=e.split(A).filter(Boolean);var t=[];for(var i=0;ir){t.push(n[i].substring(0,r));break}else{t.push(n[i])}r-=a}}return t.join("")});e=e.replace(/\x1b\[([0-9]+)C/g,function(F,e){return new Array(+e+1).join(" ")});var i=e.split(A);if(i.length===1){return e}var a=[];if(i.length>3){var l=i.slice(0,3).join("");if(l.match(/^\[0*m$/)){i=i.slice(3)}}var f,D;for(var u=0;u'+n+""},F)}return{version:"0.2.2",format:a,html:e,colors:w}}); +(function(F){var e=typeof window!=="undefined"?window:global;if(typeof define==="function"&&define.amd){define([],F)}else if(typeof module==="object"&&module.exports){module.exports=F()}else{e.ansi=F()}})(function(r){var F="[^\\x08]|[\\r\\n]{2}|&[^;]+;";var p=new RegExp("^("+F+")?\\x08");var d=new RegExp("^(?:("+F+")?\\x08(_|\\1)|"+"(_)\\x08("+F+"))");var b=/^(\r\n|\n\r|\r|\n)/;var t=/[^\r\n]+\r\x1B\[K/g;function n(i,F){var c=[];var g;var v=0;var h=[];function e(F,t){var e="";var r=0;var n;v=0;function i(F,e,r){if(FF.index){if(--v<=0){i(F.index,"",F.string,2);e+=F.string}}else{c.unshift(F)}})}var D=A.match(b);e+=D[1];a+=D[1].length-1}else{if(h.length){var o=h[0];if(a===o){h.shift()}if(a>=o){v++}}if(c.length){if(a>l.index&&l.overtyping){c.shift();i(l.index,"",l.string);r++;if(l.string===F[a]){e+=F[a]+"￱";continue}else if(l.string==="_"||F[a]==="_"){var s;if(l.string==="_"){s=F[a]}else{s=l.string}e+=s+"￲";continue}}}e+=F[a]}}return e}var r=false;F=F.replace(t,"");while(F.match(/\x08/)||c.length){F=e(F,g);if(r){break}if(!F.match(/\x08/)){r=true}}function n(F,n,t){var e=new RegExp("((:?."+n+")+)","g");return F.replace(e,function(F,e){var r=new RegExp(n,"g");return i(t,null,null,e.replace(r,""))})}if(typeof i==="function"){F=n(F,"￱",{bold:true});F=n(F,"￲",{underline:true})}return F}var w={normal:{black:"#000",red:"#A00",green:"#008400",yellow:"#A50",blue:"#00A",magenta:"#A0A",cyan:"#0AA",white:"#AAA"},faited:{black:"#000",red:"#640000",green:"#006100",yellow:"#737300",blue:"#000087",magenta:"#650065",cyan:"#008787",white:"#818181"},bold:{black:"#444",red:"#F55",green:"#44D544",yellow:"#FF5",blue:"#55F",magenta:"#F5F",cyan:"#5FF",white:"#FFF"},palette:["#000000","#AA0000","#00AA00","#AA5500","#0000AA","#AA00AA","#00AAAA","#AAAAAA","#555555","#FF5555","#55FF55","#FFFF55","#5555FF","#FF55FF","#55FFFF","#FFFFFF","#000000","#00005F","#000087","#0000AF","#0000D7","#0000FF","#005F00","#005F5F","#005F87","#005FAF","#005FD7","#005FFF","#008700","#00875F","#008787","#0087AF","#0087D7","#0087FF","#00AF00","#00AF5F","#00AF87","#00AFAF","#00AFD7","#00AFFF","#00D700","#00D75F","#00D787","#00D7AF","#00D7D7","#00D7FF","#00FF00","#00FF5F","#00FF87","#00FFAF","#00FFD7","#00FFFF","#5F0000","#5F005F","#5F0087","#5F00AF","#5F00D7","#5F00FF","#5F5F00","#5F5F5F","#5F5F87","#5F5FAF","#5F5FD7","#5F5FFF","#5F8700","#5F875F","#5F8787","#5F87AF","#5F87D7","#5F87FF","#5FAF00","#5FAF5F","#5FAF87","#5FAFAF","#5FAFD7","#5FAFFF","#5FD700","#5FD75F","#5FD787","#5FD7AF","#5FD7D7","#5FD7FF","#5FFF00","#5FFF5F","#5FFF87","#5FFFAF","#5FFFD7","#5FFFFF","#870000","#87005F","#870087","#8700AF","#8700D7","#8700FF","#875F00","#875F5F","#875F87","#875FAF","#875FD7","#875FFF","#878700","#87875F","#878787","#8787AF","#8787D7","#8787FF","#87AF00","#87AF5F","#87AF87","#87AFAF","#87AFD7","#87AFFF","#87D700","#87D75F","#87D787","#87D7AF","#87D7D7","#87D7FF","#87FF00","#87FF5F","#87FF87","#87FFAF","#87FFD7","#87FFFF","#AF0000","#AF005F","#AF0087","#AF00AF","#AF00D7","#AF00FF","#AF5F00","#AF5F5F","#AF5F87","#AF5FAF","#AF5FD7","#AF5FFF","#AF8700","#AF875F","#AF8787","#AF87AF","#AF87D7","#AF87FF","#AFAF00","#AFAF5F","#AFAF87","#AFAFAF","#AFAFD7","#AFAFFF","#AFD700","#AFD75F","#AFD787","#AFD7AF","#AFD7D7","#AFD7FF","#AFFF00","#AFFF5F","#AFFF87","#AFFFAF","#AFFFD7","#AFFFFF","#D70000","#D7005F","#D70087","#D700AF","#D700D7","#D700FF","#D75F00","#D75F5F","#D75F87","#D75FAF","#D75FD7","#D75FFF","#D78700","#D7875F","#D78787","#D787AF","#D787D7","#D787FF","#D7AF00","#D7AF5F","#D7AF87","#D7AFAF","#D7AFD7","#D7AFFF","#D7D700","#D7D75F","#D7D787","#D7D7AF","#D7D7D7","#D7D7FF","#D7FF00","#D7FF5F","#D7FF87","#D7FFAF","#D7FFD7","#D7FFFF","#FF0000","#FF005F","#FF0087","#FF00AF","#FF00D7","#FF00FF","#FF5F00","#FF5F5F","#FF5F87","#FF5FAF","#FF5FD7","#FF5FFF","#FF8700","#FF875F","#FF8787","#FF87AF","#FF87D7","#FF87FF","#FFAF00","#FFAF5F","#FFAF87","#FFAFAF","#FFAFD7","#FFAFFF","#FFD700","#FFD75F","#FFD787","#FFD7AF","#FFD7D7","#FFD7FF","#FFFF00","#FFFF5F","#FFFF87","#FFFFAF","#FFFFD7","#FFFFFF","#080808","#121212","#1C1C1C","#262626","#303030","#3A3A3A","#444444","#4E4E4E","#585858","#626262","#6C6C6C","#767676","#808080","#8A8A8A","#949494","#9E9E9E","#A8A8A8","#B2B2B2","#BCBCBC","#C6C6C6","#D0D0D0","#DADADA","#E4E4E4","#EEEEEE"]};var i=function(){var y={30:"black",31:"red",32:"green",33:"yellow",34:"blue",35:"magenta",36:"cyan",37:"white",39:"inherit"};var x={40:"black",41:"red",42:"green",43:"yellow",44:"blue",45:"magenta",46:"cyan",47:"white",49:"transparent"};function s(F,e){var r=F.split(";");var n;var t=[];var i="";var a="";var A=-1;var f=false;var l=false;var u=false;var D=w.palette;function o(F){switch(F){case 0:Object.keys(e).forEach(function(F){delete e[F]});break;case 1:t.bold=e.bold=true;e.faited=false;break;case 4:t.underline=e.underline=true;break;case 3:t.italic=e.italic=true;break;case 5:if(f||l){u=true}break;case 38:f=true;break;case 48:l=true;break;case 2:if(f||l){A=0}else{e.faited=true;e.bold=false}break;case 7:e.reverse=true;break;default:if(r[1]!=="5"){if(y[F]){i=y[F]}if(x[F]){a=x[F]}}}}function s(){if(f){if(!i){i="#"}if(i.length<7){i+=("0"+n.toString(16)).slice(-2)}}if(l){if(!a){a="#"}if(a.length<7){a+=("0"+n.toString(16)).slice(-2)}}if(A===2){A=-1}else{A++}}function c(){return u&&(l&&!a||f&&!i)}function g(){if(f&&D[n]&&!i){i=D[n]}if(l&&D[n]&&!a){a=D[n]}u=false}for(var v in r){if(r.hasOwnProperty(v)){n=parseInt(r[v],10);if(A>-1){s()}else if(c()){g()}else{o(n)}}}if(e.reverse){if(i||a){var h=a;a=i;i=h}else{i="black";a="white"}}i=i||e.color;a=a||e.background;e.background=a;e.color=i;var p,d,b;if(e.bold){p=w.bold}else if(e.faited){p=w.faited}else{p=w.normal}if(typeof i!=="undefined"){if(i.match(/^#/)){d=i}else if(i==="inherit"){d=i}else{d=p[i]}}if(typeof a!=="undefined"){if(a.match(/^#/)){b=a}else if(a==="transparent"){b=a}else{b=w.normal[a]}}var m=[t,d,b];return m}return function F(n,e){var r={};var A=/(\x1B\[[0-9;]*[A-Za-z])/g;var t=/(.*)\r?\n\x1b\[1A\x1b\[([0-9]+)C/g;e=e.replace(t,function(F,e,r){r=parseInt(r,10);var n=e.split(A).filter(Boolean);var t=[];for(var i=0;ir){t.push(n[i].substring(0,r));break}else{t.push(n[i])}r-=a}}return t.join("")});e=e.replace(/\x1b\[([0-9]+)C/g,function(F,e){return new Array(+e+1).join(" ")});var i=e.split(A);if(i.length===1){return e}var a=[];if(i.length>3){var f=i.slice(0,3).join("");if(f.match(/^\[0*m$/)){i=i.slice(3)}}var l,u;for(var D=0;D'+n+""},F)}function l(F){if(F.length===1){return F.charCodeAt(0)}var e=Array.from(F).map(function(F){return F.charCodeAt(0).toString(16).padStart(2,"0")}).reverse().join("");return parseInt(e,16)}function A(F){var n=0;var t=F.substring(F.length-128);function e(F,e){if(n<=t.length+F){var r=t.substring(n,n+F);n+=F;if(e==="string"){return r.replace(/\x00+$/g,"")}return r}}var r=e(5);if(r==="SAUCE"){var i={};i.ID=r;i.version=e(2);i.title=e(35).trim();i.author=e(20).trim();i.group=e(20).trim();i.date=e(8);i.fileSize=l(e(4));i.dataType=l(e(1));i.fileType=l(e(1));var a=[];for(var A=0;A<4;++A){if(n0){i.comments=e(f*64)}}if(n\n * Released under the MIT license\n *\n * Based on jQuery Terminal's unix formatting\n *\n */\n/* global jQuery, define, global, require, module */\n(function(factory) {\n var root = typeof window !== 'undefined' ? window : global;\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n // istanbul ignore next\n define([], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = factory();\n } else {\n // Browser\n // istanbul ignore next\n root.ansi = factory();\n }\n})(function(undefined) {\n // we match characters and html entities because command line escape brackets\n // echo don't, when writing formatter always process html entitites so it work\n // for cmd plugin as well for echo\n var chr = '[^\\\\x08]|[\\\\r\\\\n]{2}|&[^;]+;';\n var backspace_re = new RegExp('^(' + chr + ')?\\\\x08');\n var overtyping_re = new RegExp('^(?:(' + chr + ')?\\\\x08(_|\\\\1)|' +\n '(_)\\\\x08(' + chr + '))');\n var new_line_re = /^(\\r\\n|\\n\\r|\\r|\\n)/;\n var clear_line_re = /[^\\r\\n]+\\r\\x1B\\[K/g;\n // ---------------------------------------------------------------------\n // ---------------------------------------------------------------------\n // :: Replace overtyping (from man) formatting with terminal formatting\n // :: it also handle any backspaces\n // ---------------------------------------------------------------------\n function overtyping(callback, string) {\n var removed_chars = [];\n var new_position;\n var char_count = 0;\n var backspaces = [];\n function replace(string, position) {\n var result = '';\n var push = 0;\n var start;\n char_count = 0;\n function correct_position(start, match, rep_string) {\n // logic taken from $.terminal.tracking_replace\n if (start < position) {\n var last_index = start + match.length;\n if (last_index < position) {\n // It's after the replacement, move it\n new_position = Math.max(\n 0,\n new_position +\n rep_string.length -\n match.length\n );\n } else {\n // It's *in* the replacement, put it just after\n new_position += rep_string.length - (position - start);\n }\n }\n }\n for (var i = 0; i < string.length; ++i) {\n var partial = string.substring(i);\n var match = partial.match(backspace_re);\n var removed_char = removed_chars[0];\n if (match) {\n // we remove backspace and character or html entity before it\n // but we keep it in removed array so we can put it back\n // when we have caritage return or line feed\n if (match[1]) {\n start = i - match[1].length + push;\n removed_chars.push({\n index: start,\n string: match[1],\n overtyping: partial.match(overtyping_re)\n });\n correct_position(start, match[0], '', 1);\n }\n if (char_count < 0) {\n char_count = 0;\n }\n backspaces = backspaces.map(function(b) {\n return b - 1;\n });\n backspaces.push(start);\n return result + partial.replace(backspace_re, '');\n } else if (partial.match(new_line_re)) {\n // if newline we need to add at the end all characters\n // removed by backspace but only if there are no more\n // other characters than backspaces added between\n // backspaces and newline\n if (removed_chars.length) {\n var chars = removed_chars;\n removed_chars = [];\n chars.reverse().forEach(function(char) {\n if (i > char.index) {\n if (--char_count <= 0) {\n correct_position(char.index, '', char.string, 2);\n result += char.string;\n }\n } else {\n removed_chars.unshift(char);\n }\n });\n }\n var m = partial.match(new_line_re);\n result += m[1];\n i += m[1].length - 1;\n } else {\n if (backspaces.length) {\n var backspace = backspaces[0];\n if (i === backspace) {\n backspaces.shift();\n }\n if (i >= backspace) {\n char_count++;\n }\n }\n if (removed_chars.length) {\n // if we are in index of removed character we check if the\n // character is the same it will be bold or if removed char\n // or char at index is underscore then it will\n // be terminal formatting with underscore\n if (i > removed_char.index && removed_char.overtyping) {\n removed_chars.shift();\n correct_position(removed_char.index, '', removed_char.string);\n // if we add special character we need to correct\n // next push to removed_char array\n push++;\n // we use special characters instead of terminal\n // formatting so it's easier to proccess when removing\n // backspaces\n if (removed_char.string === string[i]) {\n result += string[i] + '\\uFFF1';\n continue;\n } else if (removed_char.string === '_' ||\n string[i] === '_') {\n var chr;\n if (removed_char.string === '_') {\n chr = string[i];\n } else {\n chr = removed_char.string;\n }\n result += chr + '\\uFFF2';\n continue;\n }\n }\n }\n result += string[i];\n }\n }\n return result;\n }\n var break_next = false;\n // we need to clear line \\x1b[K in overtyping because it need to be before\n // overtyping and from_ansi need to be called after so it escape stuff\n // between Escape Code and cmd will have escaped formatting typed by user\n string = string.replace(clear_line_re, '');\n // loop until not more backspaces\n while (string.match(/\\x08/) || removed_chars.length) {\n string = replace(string, new_position);\n if (break_next) {\n break;\n }\n if (!string.match(/\\x08/)) {\n // we break the loop so if removed_chars still chave items\n // we don't have infite loop\n break_next = true;\n }\n }\n function format(string, chr, style) {\n var re = new RegExp('((:?.' + chr + ')+)', 'g');\n return string.replace(re, function(_, string) {\n var re = new RegExp(chr, 'g');\n return callback(style, null, null, string.replace(re, ''));\n });\n }\n // replace special characters with terminal formatting\n if (typeof callback === 'function') {\n string = format(string, '\\uFFF1', {bold: true});\n string = format(string, '\\uFFF2', {underline: true});\n }\n return string;\n }\n // ---------------------------------------------------------------------\n // :: Html colors taken from ANSI formatting in Linux Terminal\n // ---------------------------------------------------------------------\n var ansi_colors = {\n normal: {\n black: '#000',\n red: '#A00',\n green: '#008400',\n yellow: '#A50',\n blue: '#00A',\n magenta: '#A0A',\n cyan: '#0AA',\n white: '#AAA'\n },\n faited: {\n black: '#000',\n red: '#640000',\n green: '#006100',\n yellow: '#737300',\n blue: '#000087',\n magenta: '#650065',\n cyan: '#008787',\n white: '#818181'\n },\n bold: {\n black: '#444',\n red: '#F55',\n green: '#44D544',\n yellow: '#FF5',\n blue: '#55F',\n magenta: '#F5F',\n cyan: '#5FF',\n white: '#FFF'\n },\n // XTerm 8-bit pallete\n palette: [\n '#000000', '#AA0000', '#00AA00', '#AA5500', '#0000AA', '#AA00AA',\n '#00AAAA', '#AAAAAA', '#555555', '#FF5555', '#55FF55', '#FFFF55',\n '#5555FF', '#FF55FF', '#55FFFF', '#FFFFFF', '#000000', '#00005F',\n '#000087', '#0000AF', '#0000D7', '#0000FF', '#005F00', '#005F5F',\n '#005F87', '#005FAF', '#005FD7', '#005FFF', '#008700', '#00875F',\n '#008787', '#0087AF', '#0087D7', '#0087FF', '#00AF00', '#00AF5F',\n '#00AF87', '#00AFAF', '#00AFD7', '#00AFFF', '#00D700', '#00D75F',\n '#00D787', '#00D7AF', '#00D7D7', '#00D7FF', '#00FF00', '#00FF5F',\n '#00FF87', '#00FFAF', '#00FFD7', '#00FFFF', '#5F0000', '#5F005F',\n '#5F0087', '#5F00AF', '#5F00D7', '#5F00FF', '#5F5F00', '#5F5F5F',\n '#5F5F87', '#5F5FAF', '#5F5FD7', '#5F5FFF', '#5F8700', '#5F875F',\n '#5F8787', '#5F87AF', '#5F87D7', '#5F87FF', '#5FAF00', '#5FAF5F',\n '#5FAF87', '#5FAFAF', '#5FAFD7', '#5FAFFF', '#5FD700', '#5FD75F',\n '#5FD787', '#5FD7AF', '#5FD7D7', '#5FD7FF', '#5FFF00', '#5FFF5F',\n '#5FFF87', '#5FFFAF', '#5FFFD7', '#5FFFFF', '#870000', '#87005F',\n '#870087', '#8700AF', '#8700D7', '#8700FF', '#875F00', '#875F5F',\n '#875F87', '#875FAF', '#875FD7', '#875FFF', '#878700', '#87875F',\n '#878787', '#8787AF', '#8787D7', '#8787FF', '#87AF00', '#87AF5F',\n '#87AF87', '#87AFAF', '#87AFD7', '#87AFFF', '#87D700', '#87D75F',\n '#87D787', '#87D7AF', '#87D7D7', '#87D7FF', '#87FF00', '#87FF5F',\n '#87FF87', '#87FFAF', '#87FFD7', '#87FFFF', '#AF0000', '#AF005F',\n '#AF0087', '#AF00AF', '#AF00D7', '#AF00FF', '#AF5F00', '#AF5F5F',\n '#AF5F87', '#AF5FAF', '#AF5FD7', '#AF5FFF', '#AF8700', '#AF875F',\n '#AF8787', '#AF87AF', '#AF87D7', '#AF87FF', '#AFAF00', '#AFAF5F',\n '#AFAF87', '#AFAFAF', '#AFAFD7', '#AFAFFF', '#AFD700', '#AFD75F',\n '#AFD787', '#AFD7AF', '#AFD7D7', '#AFD7FF', '#AFFF00', '#AFFF5F',\n '#AFFF87', '#AFFFAF', '#AFFFD7', '#AFFFFF', '#D70000', '#D7005F',\n '#D70087', '#D700AF', '#D700D7', '#D700FF', '#D75F00', '#D75F5F',\n '#D75F87', '#D75FAF', '#D75FD7', '#D75FFF', '#D78700', '#D7875F',\n '#D78787', '#D787AF', '#D787D7', '#D787FF', '#D7AF00', '#D7AF5F',\n '#D7AF87', '#D7AFAF', '#D7AFD7', '#D7AFFF', '#D7D700', '#D7D75F',\n '#D7D787', '#D7D7AF', '#D7D7D7', '#D7D7FF', '#D7FF00', '#D7FF5F',\n '#D7FF87', '#D7FFAF', '#D7FFD7', '#D7FFFF', '#FF0000', '#FF005F',\n '#FF0087', '#FF00AF', '#FF00D7', '#FF00FF', '#FF5F00', '#FF5F5F',\n '#FF5F87', '#FF5FAF', '#FF5FD7', '#FF5FFF', '#FF8700', '#FF875F',\n '#FF8787', '#FF87AF', '#FF87D7', '#FF87FF', '#FFAF00', '#FFAF5F',\n '#FFAF87', '#FFAFAF', '#FFAFD7', '#FFAFFF', '#FFD700', '#FFD75F',\n '#FFD787', '#FFD7AF', '#FFD7D7', '#FFD7FF', '#FFFF00', '#FFFF5F',\n '#FFFF87', '#FFFFAF', '#FFFFD7', '#FFFFFF', '#080808', '#121212',\n '#1C1C1C', '#262626', '#303030', '#3A3A3A', '#444444', '#4E4E4E',\n '#585858', '#626262', '#6C6C6C', '#767676', '#808080', '#8A8A8A',\n '#949494', '#9E9E9E', '#A8A8A8', '#B2B2B2', '#BCBCBC', '#C6C6C6',\n '#D0D0D0', '#DADADA', '#E4E4E4', '#EEEEEE'\n ]\n };\n var from_ansi = (function() {\n var color_list = {\n 30: 'black',\n 31: 'red',\n 32: 'green',\n 33: 'yellow',\n 34: 'blue',\n 35: 'magenta',\n 36: 'cyan',\n 37: 'white',\n\n 39: 'inherit' // default color\n };\n var background_list = {\n 40: 'black',\n 41: 'red',\n 42: 'green',\n 43: 'yellow',\n 44: 'blue',\n 45: 'magenta',\n 46: 'cyan',\n 47: 'white',\n\n 49: 'transparent' // default background\n };\n function format_ansi(code, state) {\n var controls = code.split(';');\n var num;\n var styles = [];\n var output_color = '';\n var output_background = '';\n var _process_true_color = -1;\n var _ex_color = false;\n var _ex_background = false;\n var _process_8bit = false;\n var palette = ansi_colors.palette;\n function set_styles(num) {\n switch (num) {\n case 0:\n Object.keys(state).forEach(function(key) {\n delete state[key];\n });\n break;\n case 1:\n styles.bold = state.bold = true;\n state.faited = false;\n break;\n case 4:\n styles.underline = state.underline = true;\n break;\n case 3:\n styles.italic = state.italic = true;\n break;\n case 5:\n if (_ex_color || _ex_background) {\n _process_8bit = true;\n }\n break;\n case 38:\n _ex_color = true;\n break;\n case 48:\n _ex_background = true;\n break;\n case 2:\n if (_ex_color || _ex_background) {\n _process_true_color = 0;\n } else {\n state.faited = true;\n state.bold = false;\n }\n break;\n case 7:\n state.reverse = true;\n break;\n default:\n if (controls[1] !== '5') {\n if (color_list[num]) {\n output_color = color_list[num];\n }\n if (background_list[num]) {\n output_background = background_list[num];\n }\n }\n }\n }\n // -----------------------------------------------------------------\n function process_true_color() {\n if (_ex_color) {\n if (!output_color) {\n output_color = '#';\n }\n if (output_color.length < 7) {\n output_color += ('0' + num.toString(16)).slice(-2);\n }\n }\n if (_ex_background) {\n if (!output_background) {\n output_background = '#';\n }\n if (output_background.length < 7) {\n output_background += ('0' + num.toString(16)).slice(-2);\n }\n }\n if (_process_true_color === 2) {\n _process_true_color = -1;\n } else {\n _process_true_color++;\n }\n }\n // -----------------------------------------------------------------\n function should__process_8bit() {\n return _process_8bit && ((_ex_background && !output_background) ||\n (_ex_color && !output_color));\n }\n // -----------------------------------------------------------------\n function process_8bit() {\n if (_ex_color && palette[num] && !output_color) {\n output_color = palette[num];\n }\n if (_ex_background && palette[num] && !output_background) {\n output_background = palette[num];\n }\n _process_8bit = false;\n }\n // -----------------------------------------------------------------\n for (var i in controls) {\n if (controls.hasOwnProperty(i)) {\n num = parseInt(controls[i], 10);\n if (_process_true_color > -1) {\n process_true_color();\n } else if (should__process_8bit()) {\n process_8bit();\n } else {\n set_styles(num);\n }\n }\n }\n if (state.reverse) {\n if (output_color || output_background) {\n var tmp = output_background;\n output_background = output_color;\n output_color = tmp;\n } else {\n output_color = 'black';\n output_background = 'white';\n }\n }\n output_color = output_color || state.color;\n output_background = output_background || state.background;\n state.background = output_background;\n state.color = output_color;\n var colors, color, background;\n if (state.bold) {\n colors = ansi_colors.bold;\n } else if (state.faited) {\n colors = ansi_colors.faited;\n } else {\n colors = ansi_colors.normal;\n }\n if (typeof output_color !== 'undefined') {\n if (output_color.match(/^#/)) {\n color = output_color;\n } else if (output_color === 'inherit') {\n color = output_color;\n } else {\n color = colors[output_color];\n }\n }\n if (typeof output_background !== 'undefined') {\n if (output_background.match(/^#/)) {\n background = output_background;\n } else if (output_background === 'transparent') {\n background = output_background;\n } else {\n background = ansi_colors.normal[output_background];\n }\n }\n var ret = [styles, color, background];\n return ret;\n }\n return function from_ansi(callback, input) {\n var state = {}; // used to inherit vales from previous formatting\n var ansi_re = /(\\x1B\\[[0-9;]*[A-Za-z])/g;\n var cursor_re = /(.*)\\r?\\n\\x1b\\[1A\\x1b\\[([0-9]+)C/g;\n // move up and right we need to delete what's after in previous line\n input = input.replace(cursor_re, function(_, line, n) {\n n = parseInt(n, 10);\n var parts = line.split(ansi_re).filter(Boolean);\n var result = [];\n for (var i = 0; i < parts.length; ++i) {\n if (parts[i].match(ansi_re)) {\n result.push(parts[i]);\n } else {\n var len = parts[i].length;\n if (len > n) {\n result.push(parts[i].substring(0, n));\n break;\n } else {\n result.push(parts[i]);\n }\n n -= len;\n }\n }\n return result.join('');\n });\n // move right is just repate space\n input = input.replace(/\\x1b\\[([0-9]+)C/g, function(_, num) {\n return new Array(+num + 1).join(' ');\n });\n var splitted = input.split(ansi_re);\n if (splitted.length === 1) {\n return input;\n }\n var output = [];\n //skip closing at the begining\n if (splitted.length > 3) {\n var str = splitted.slice(0, 3).join('');\n if (str.match(/^\\[0*m$/)) {\n splitted = splitted.slice(3);\n }\n }\n var code, match;\n for (var i = 0; i < splitted.length; ++i) {\n match = splitted[i].match(/^\\x1B\\[([0-9;]*)([A-Za-z])$/);\n if (match) {\n switch (match[2]) {\n case 'm':\n code = format_ansi(match[1], state);\n if (+match[1] === 0) {\n output.push(false);\n } else {\n output.push(code);\n }\n break;\n }\n } else {\n output.push(splitted[i].replace(/\\x1b\\[[0-9;]*/g, ''));\n }\n }\n var formatting;\n return output.reduce(function(acc, obj) {\n if (typeof obj === 'string') {\n if (formatting && obj) {\n var args = formatting.concat([obj]);\n if (typeof callback === 'function') {\n return acc + callback.apply(null, args);\n }\n }\n formatting = null;\n return acc + obj;\n } else {\n formatting = obj;\n return acc;\n }\n }, '');\n };\n })();\n function format(callback, text) {\n if (text === undefined) {\n return function(text) {\n return format(callback, text);\n };\n }\n return from_ansi(callback, overtyping(callback, text));\n }\n function html(text) {\n return format(function(styles, color, background, text) {\n var style = [];\n if (color) {\n style.push('color:' + color);\n }\n if (background) {\n style.push('background:' + background);\n }\n if (styles.bold) {\n style.push('font-weight:bold');\n }\n if (styles.italic) {\n style.push('font-style:italic');\n }\n if (styles.underline) {\n styles.push('text-decoration:underline');\n }\n return '' + text + '';\n }, text);\n }\n return {\n version: '0.2.2',\n format: format,\n html: html,\n colors: ansi_colors\n };\n});\n"]} \ No newline at end of file +{"version":3,"sources":["index.js"],"names":["factory","root","window","global","define","amd","module","exports","ansi","undefined","chr","backspace_re","RegExp","overtyping_re","new_line_re","clear_line_re","overtyping","callback","string","removed_chars","new_position","char_count","backspaces","replace","position","result","push","start","correct_position","match","rep_string","last_index","length","Math","max","i","partial","substring","removed_char","index","map","b","chars","reverse","forEach","char","unshift","m","backspace","shift","break_next","format","style","re","_","bold","underline","ansi_colors","normal","black","red","green","yellow","blue","magenta","cyan","white","faited","palette","from_ansi","color_list","30","31","32","33","34","35","36","37","39","background_list","40","41","42","43","44","45","46","47","49","format_ansi","code","state","controls","split","num","styles","output_color","output_background","_process_true_color","_ex_color","_ex_background","_process_8bit","set_styles","Object","keys","key","italic","process_true_color","toString","slice","should__process_8bit","process_8bit","hasOwnProperty","parseInt","tmp","color","background","colors","ret","input","ansi_re","cursor_re","line","n","parts","filter","Boolean","len","join","Array","splitted","output","str","formatting","reduce","acc","obj","args","concat","apply","text","html","int","charCodeAt","hex","from","x","padStart","sause","offset","sauce","read","type","id","ID","version","title","trim","author","group","date","fileSize","dataType","fileType","tinfo","lines","comments","tflags","zstring","meta"],"mappings":"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","sourcesContent":["/**@license\n * ▄████████ ███▄▄▄▄ ▄████████ ▄█ ████████▄ ▄████████ ▄████████\n * ███ ███ ███▀▀▀██▄ ███ ███ ███ ███ ▀███ ███ ███ ███ ███\n * ███ ███ ███ ███ ███ █▀ ███▌ ███ ███ ███ █▀ ███ █▀\n * ███ ███ ███ ███ ███ ███▌ ███ ███ ▄███▄▄▄ ███\n * ▀███████████ ███ ███ ▀███████████ ███▌ ███ ███ ▀▀███▀▀▀ ███\n * ███ ███ ███ ███ ███ ███ ███ ███ ███ █▄ ███ █▄\n * ███ ███ ███ ███ ▄█ ███ ███ ███ ▄███ ███ ███ ███ ███\n * ███ █▀ ▀█ █▀ ▄████████▀ █▀ ████████▀ ██████████ ████████▀\n * v. 0.3.0\n *\n * Copyright (c) 2018-2019 Jakub T. Jankiewicz \n * Released under the MIT license\n *\n * Based on jQuery Terminal's unix formatting\n *\n */\n/* global define, global, module */\n(function(factory) {\n var root = typeof window !== 'undefined' ? window : global;\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n // istanbul ignore next\n define([], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = factory();\n } else {\n // Browser\n // istanbul ignore next\n root.ansi = factory();\n }\n})(function(undefined) {\n // we match characters and html entities because command line escape brackets\n // echo don't, when writing formatter always process html entitites so it work\n // for cmd plugin as well for echo\n var chr = '[^\\\\x08]|[\\\\r\\\\n]{2}|&[^;]+;';\n var backspace_re = new RegExp('^(' + chr + ')?\\\\x08');\n var overtyping_re = new RegExp('^(?:(' + chr + ')?\\\\x08(_|\\\\1)|' +\n '(_)\\\\x08(' + chr + '))');\n var new_line_re = /^(\\r\\n|\\n\\r|\\r|\\n)/;\n var clear_line_re = /[^\\r\\n]+\\r\\x1B\\[K/g;\n // ---------------------------------------------------------------------\n // :: Replace overtyping (from man) formatting with terminal formatting\n // :: it also handle any backspaces\n // ---------------------------------------------------------------------\n function overtyping(callback, string) {\n var removed_chars = [];\n var new_position;\n var char_count = 0;\n var backspaces = [];\n function replace(string, position) {\n var result = '';\n var push = 0;\n var start;\n char_count = 0;\n function correct_position(start, match, rep_string) {\n // logic taken from $.terminal.tracking_replace\n if (start < position) {\n var last_index = start + match.length;\n if (last_index < position) {\n // It's after the replacement, move it\n new_position = Math.max(\n 0,\n new_position +\n rep_string.length -\n match.length\n );\n } else {\n // It's *in* the replacement, put it just after\n new_position += rep_string.length - (position - start);\n }\n }\n }\n for (var i = 0; i < string.length; ++i) {\n var partial = string.substring(i);\n var match = partial.match(backspace_re);\n var removed_char = removed_chars[0];\n if (match) {\n // we remove backspace and character or html entity before it\n // but we keep it in removed array so we can put it back\n // when we have caritage return or line feed\n if (match[1]) {\n start = i - match[1].length + push;\n removed_chars.push({\n index: start,\n string: match[1],\n overtyping: partial.match(overtyping_re)\n });\n correct_position(start, match[0], '', 1);\n }\n if (char_count < 0) {\n char_count = 0;\n }\n backspaces = backspaces.map(function(b) {\n return b - 1;\n });\n backspaces.push(start);\n return result + partial.replace(backspace_re, '');\n } else if (partial.match(new_line_re)) {\n // if newline we need to add at the end all characters\n // removed by backspace but only if there are no more\n // other characters than backspaces added between\n // backspaces and newline\n if (removed_chars.length) {\n var chars = removed_chars;\n removed_chars = [];\n chars.reverse().forEach(function(char) {\n if (i > char.index) {\n if (--char_count <= 0) {\n correct_position(char.index, '', char.string, 2);\n result += char.string;\n }\n } else {\n removed_chars.unshift(char);\n }\n });\n }\n var m = partial.match(new_line_re);\n result += m[1];\n i += m[1].length - 1;\n } else {\n if (backspaces.length) {\n var backspace = backspaces[0];\n if (i === backspace) {\n backspaces.shift();\n }\n if (i >= backspace) {\n char_count++;\n }\n }\n if (removed_chars.length) {\n // if we are in index of removed character we check if the\n // character is the same it will be bold or if removed char\n // or char at index is underscore then it will\n // be terminal formatting with underscore\n if (i > removed_char.index && removed_char.overtyping) {\n removed_chars.shift();\n correct_position(removed_char.index, '', removed_char.string);\n // if we add special character we need to correct\n // next push to removed_char array\n push++;\n // we use special characters instead of terminal\n // formatting so it's easier to proccess when removing\n // backspaces\n if (removed_char.string === string[i]) {\n result += string[i] + '\\uFFF1';\n continue;\n } else if (removed_char.string === '_' ||\n string[i] === '_') {\n var chr;\n if (removed_char.string === '_') {\n chr = string[i];\n } else {\n chr = removed_char.string;\n }\n result += chr + '\\uFFF2';\n continue;\n }\n }\n }\n result += string[i];\n }\n }\n return result;\n }\n var break_next = false;\n // we need to clear line \\x1b[K in overtyping because it need to be before\n // overtyping and from_ansi need to be called after so it escape stuff\n // between Escape Code and cmd will have escaped formatting typed by user\n string = string.replace(clear_line_re, '');\n // loop until not more backspaces\n while (string.match(/\\x08/) || removed_chars.length) {\n string = replace(string, new_position);\n if (break_next) {\n break;\n }\n if (!string.match(/\\x08/)) {\n // we break the loop so if removed_chars still chave items\n // we don't have infite loop\n break_next = true;\n }\n }\n function format(string, chr, style) {\n var re = new RegExp('((:?.' + chr + ')+)', 'g');\n return string.replace(re, function(_, string) {\n var re = new RegExp(chr, 'g');\n return callback(style, null, null, string.replace(re, ''));\n });\n }\n // replace special characters with terminal formatting\n if (typeof callback === 'function') {\n string = format(string, '\\uFFF1', {bold: true});\n string = format(string, '\\uFFF2', {underline: true});\n }\n return string;\n }\n // ---------------------------------------------------------------------\n // :: Html colors taken from ANSI formatting in Linux Terminal\n // ---------------------------------------------------------------------\n var ansi_colors = {\n normal: {\n black: '#000',\n red: '#A00',\n green: '#008400',\n yellow: '#A50',\n blue: '#00A',\n magenta: '#A0A',\n cyan: '#0AA',\n white: '#AAA'\n },\n faited: {\n black: '#000',\n red: '#640000',\n green: '#006100',\n yellow: '#737300',\n blue: '#000087',\n magenta: '#650065',\n cyan: '#008787',\n white: '#818181'\n },\n bold: {\n black: '#444',\n red: '#F55',\n green: '#44D544',\n yellow: '#FF5',\n blue: '#55F',\n magenta: '#F5F',\n cyan: '#5FF',\n white: '#FFF'\n },\n // XTerm 8-bit pallete\n palette: [\n '#000000', '#AA0000', '#00AA00', '#AA5500', '#0000AA', '#AA00AA',\n '#00AAAA', '#AAAAAA', '#555555', '#FF5555', '#55FF55', '#FFFF55',\n '#5555FF', '#FF55FF', '#55FFFF', '#FFFFFF', '#000000', '#00005F',\n '#000087', '#0000AF', '#0000D7', '#0000FF', '#005F00', '#005F5F',\n '#005F87', '#005FAF', '#005FD7', '#005FFF', '#008700', '#00875F',\n '#008787', '#0087AF', '#0087D7', '#0087FF', '#00AF00', '#00AF5F',\n '#00AF87', '#00AFAF', '#00AFD7', '#00AFFF', '#00D700', '#00D75F',\n '#00D787', '#00D7AF', '#00D7D7', '#00D7FF', '#00FF00', '#00FF5F',\n '#00FF87', '#00FFAF', '#00FFD7', '#00FFFF', '#5F0000', '#5F005F',\n '#5F0087', '#5F00AF', '#5F00D7', '#5F00FF', '#5F5F00', '#5F5F5F',\n '#5F5F87', '#5F5FAF', '#5F5FD7', '#5F5FFF', '#5F8700', '#5F875F',\n '#5F8787', '#5F87AF', '#5F87D7', '#5F87FF', '#5FAF00', '#5FAF5F',\n '#5FAF87', '#5FAFAF', '#5FAFD7', '#5FAFFF', '#5FD700', '#5FD75F',\n '#5FD787', '#5FD7AF', '#5FD7D7', '#5FD7FF', '#5FFF00', '#5FFF5F',\n '#5FFF87', '#5FFFAF', '#5FFFD7', '#5FFFFF', '#870000', '#87005F',\n '#870087', '#8700AF', '#8700D7', '#8700FF', '#875F00', '#875F5F',\n '#875F87', '#875FAF', '#875FD7', '#875FFF', '#878700', '#87875F',\n '#878787', '#8787AF', '#8787D7', '#8787FF', '#87AF00', '#87AF5F',\n '#87AF87', '#87AFAF', '#87AFD7', '#87AFFF', '#87D700', '#87D75F',\n '#87D787', '#87D7AF', '#87D7D7', '#87D7FF', '#87FF00', '#87FF5F',\n '#87FF87', '#87FFAF', '#87FFD7', '#87FFFF', '#AF0000', '#AF005F',\n '#AF0087', '#AF00AF', '#AF00D7', '#AF00FF', '#AF5F00', '#AF5F5F',\n '#AF5F87', '#AF5FAF', '#AF5FD7', '#AF5FFF', '#AF8700', '#AF875F',\n '#AF8787', '#AF87AF', '#AF87D7', '#AF87FF', '#AFAF00', '#AFAF5F',\n '#AFAF87', '#AFAFAF', '#AFAFD7', '#AFAFFF', '#AFD700', '#AFD75F',\n '#AFD787', '#AFD7AF', '#AFD7D7', '#AFD7FF', '#AFFF00', '#AFFF5F',\n '#AFFF87', '#AFFFAF', '#AFFFD7', '#AFFFFF', '#D70000', '#D7005F',\n '#D70087', '#D700AF', '#D700D7', '#D700FF', '#D75F00', '#D75F5F',\n '#D75F87', '#D75FAF', '#D75FD7', '#D75FFF', '#D78700', '#D7875F',\n '#D78787', '#D787AF', '#D787D7', '#D787FF', '#D7AF00', '#D7AF5F',\n '#D7AF87', '#D7AFAF', '#D7AFD7', '#D7AFFF', '#D7D700', '#D7D75F',\n '#D7D787', '#D7D7AF', '#D7D7D7', '#D7D7FF', '#D7FF00', '#D7FF5F',\n '#D7FF87', '#D7FFAF', '#D7FFD7', '#D7FFFF', '#FF0000', '#FF005F',\n '#FF0087', '#FF00AF', '#FF00D7', '#FF00FF', '#FF5F00', '#FF5F5F',\n '#FF5F87', '#FF5FAF', '#FF5FD7', '#FF5FFF', '#FF8700', '#FF875F',\n '#FF8787', '#FF87AF', '#FF87D7', '#FF87FF', '#FFAF00', '#FFAF5F',\n '#FFAF87', '#FFAFAF', '#FFAFD7', '#FFAFFF', '#FFD700', '#FFD75F',\n '#FFD787', '#FFD7AF', '#FFD7D7', '#FFD7FF', '#FFFF00', '#FFFF5F',\n '#FFFF87', '#FFFFAF', '#FFFFD7', '#FFFFFF', '#080808', '#121212',\n '#1C1C1C', '#262626', '#303030', '#3A3A3A', '#444444', '#4E4E4E',\n '#585858', '#626262', '#6C6C6C', '#767676', '#808080', '#8A8A8A',\n '#949494', '#9E9E9E', '#A8A8A8', '#B2B2B2', '#BCBCBC', '#C6C6C6',\n '#D0D0D0', '#DADADA', '#E4E4E4', '#EEEEEE'\n ]\n };\n var from_ansi = (function() {\n var color_list = {\n 30: 'black',\n 31: 'red',\n 32: 'green',\n 33: 'yellow',\n 34: 'blue',\n 35: 'magenta',\n 36: 'cyan',\n 37: 'white',\n\n 39: 'inherit' // default color\n };\n var background_list = {\n 40: 'black',\n 41: 'red',\n 42: 'green',\n 43: 'yellow',\n 44: 'blue',\n 45: 'magenta',\n 46: 'cyan',\n 47: 'white',\n\n 49: 'transparent' // default background\n };\n function format_ansi(code, state) {\n var controls = code.split(';');\n var num;\n var styles = [];\n var output_color = '';\n var output_background = '';\n var _process_true_color = -1;\n var _ex_color = false;\n var _ex_background = false;\n var _process_8bit = false;\n var palette = ansi_colors.palette;\n function set_styles(num) {\n switch (num) {\n case 0:\n Object.keys(state).forEach(function(key) {\n delete state[key];\n });\n break;\n case 1:\n styles.bold = state.bold = true;\n state.faited = false;\n break;\n case 4:\n styles.underline = state.underline = true;\n break;\n case 3:\n styles.italic = state.italic = true;\n break;\n case 5:\n if (_ex_color || _ex_background) {\n _process_8bit = true;\n }\n break;\n case 38:\n _ex_color = true;\n break;\n case 48:\n _ex_background = true;\n break;\n case 2:\n if (_ex_color || _ex_background) {\n _process_true_color = 0;\n } else {\n state.faited = true;\n state.bold = false;\n }\n break;\n case 7:\n state.reverse = true;\n break;\n default:\n if (controls[1] !== '5') {\n if (color_list[num]) {\n output_color = color_list[num];\n }\n if (background_list[num]) {\n output_background = background_list[num];\n }\n }\n }\n }\n // -----------------------------------------------------------------\n function process_true_color() {\n if (_ex_color) {\n if (!output_color) {\n output_color = '#';\n }\n if (output_color.length < 7) {\n output_color += ('0' + num.toString(16)).slice(-2);\n }\n }\n if (_ex_background) {\n if (!output_background) {\n output_background = '#';\n }\n if (output_background.length < 7) {\n output_background += ('0' + num.toString(16)).slice(-2);\n }\n }\n if (_process_true_color === 2) {\n _process_true_color = -1;\n } else {\n _process_true_color++;\n }\n }\n // -----------------------------------------------------------------\n function should__process_8bit() {\n return _process_8bit && ((_ex_background && !output_background) ||\n (_ex_color && !output_color));\n }\n // -----------------------------------------------------------------\n function process_8bit() {\n if (_ex_color && palette[num] && !output_color) {\n output_color = palette[num];\n }\n if (_ex_background && palette[num] && !output_background) {\n output_background = palette[num];\n }\n _process_8bit = false;\n }\n // -----------------------------------------------------------------\n for (var i in controls) {\n if (controls.hasOwnProperty(i)) {\n num = parseInt(controls[i], 10);\n if (_process_true_color > -1) {\n process_true_color();\n } else if (should__process_8bit()) {\n process_8bit();\n } else {\n set_styles(num);\n }\n }\n }\n if (state.reverse) {\n if (output_color || output_background) {\n var tmp = output_background;\n output_background = output_color;\n output_color = tmp;\n } else {\n output_color = 'black';\n output_background = 'white';\n }\n }\n output_color = output_color || state.color;\n output_background = output_background || state.background;\n state.background = output_background;\n state.color = output_color;\n var colors, color, background;\n if (state.bold) {\n colors = ansi_colors.bold;\n } else if (state.faited) {\n colors = ansi_colors.faited;\n } else {\n colors = ansi_colors.normal;\n }\n if (typeof output_color !== 'undefined') {\n if (output_color.match(/^#/)) {\n color = output_color;\n } else if (output_color === 'inherit') {\n color = output_color;\n } else {\n color = colors[output_color];\n }\n }\n if (typeof output_background !== 'undefined') {\n if (output_background.match(/^#/)) {\n background = output_background;\n } else if (output_background === 'transparent') {\n background = output_background;\n } else {\n background = ansi_colors.normal[output_background];\n }\n }\n var ret = [styles, color, background];\n return ret;\n }\n return function from_ansi(callback, input) {\n var state = {}; // used to inherit vales from previous formatting\n var ansi_re = /(\\x1B\\[[0-9;]*[A-Za-z])/g;\n var cursor_re = /(.*)\\r?\\n\\x1b\\[1A\\x1b\\[([0-9]+)C/g;\n // move up and right we need to delete what's after in previous line\n input = input.replace(cursor_re, function(_, line, n) {\n n = parseInt(n, 10);\n var parts = line.split(ansi_re).filter(Boolean);\n var result = [];\n for (var i = 0; i < parts.length; ++i) {\n if (parts[i].match(ansi_re)) {\n result.push(parts[i]);\n } else {\n var len = parts[i].length;\n if (len > n) {\n result.push(parts[i].substring(0, n));\n break;\n } else {\n result.push(parts[i]);\n }\n n -= len;\n }\n }\n return result.join('');\n });\n // move right is just repate space\n input = input.replace(/\\x1b\\[([0-9]+)C/g, function(_, num) {\n return new Array(+num + 1).join(' ');\n });\n var splitted = input.split(ansi_re);\n if (splitted.length === 1) {\n return input;\n }\n var output = [];\n //skip closing at the begining\n if (splitted.length > 3) {\n var str = splitted.slice(0, 3).join('');\n if (str.match(/^\\[0*m$/)) {\n splitted = splitted.slice(3);\n }\n }\n var code, match;\n for (var i = 0; i < splitted.length; ++i) {\n match = splitted[i].match(/^\\x1B\\[([0-9;]*)([A-Za-z])$/);\n if (match) {\n switch (match[2]) {\n case 'm':\n code = format_ansi(match[1], state);\n if (+match[1] === 0) {\n output.push(false);\n } else {\n output.push(code);\n }\n break;\n }\n } else {\n output.push(splitted[i].replace(/\\x1b\\[[0-9;]*/g, ''));\n }\n }\n var formatting;\n return output.reduce(function(acc, obj) {\n if (typeof obj === 'string') {\n if (formatting && obj) {\n var args = formatting.concat([obj]);\n if (typeof callback === 'function') {\n return acc + callback.apply(null, args);\n }\n }\n formatting = null;\n return acc + obj;\n } else {\n formatting = obj;\n return acc;\n }\n }, '');\n };\n })();\n // -------------------------------------------------------------------------\n function format(callback, text) {\n if (text === undefined) {\n return function(text) {\n return format(callback, text);\n };\n }\n return from_ansi(callback, overtyping(callback, text));\n }\n // -------------------------------------------------------------------------\n function html(text) {\n return format(function(styles, color, background, text) {\n var style = [];\n if (color) {\n style.push('color:' + color);\n }\n if (background) {\n style.push('background:' + background);\n }\n if (styles.bold) {\n style.push('font-weight:bold');\n }\n if (styles.italic) {\n style.push('font-style:italic');\n }\n if (styles.underline) {\n styles.push('text-decoration:underline');\n }\n return '' + text + '';\n }, text);\n }\n // -------------------------------------------------------------------------\n // :: SAUSE parser\n // :: http://www.acid.org/info/sauce/sauce.htm\n // -------------------------------------------------------------------------\n function int(chr) {\n if (chr.length === 1) {\n return chr.charCodeAt(0);\n }\n var hex = Array.from(chr).map(function(x) {\n return x.charCodeAt(0).toString(16).padStart(2, '0');\n }).reverse().join('');\n return parseInt(hex, 16);\n }\n // -------------------------------------------------------------------------\n function sause(str) {\n var offset = 0;\n var sauce = str.substring(str.length - 128);\n function read(len, type) {\n if (offset <= sauce.length + len) {\n var result = sauce.substring(offset, offset + len);\n offset += len;\n if (type === 'string') {\n return result.replace(/\\x00+$/g, '');\n }\n return result;\n }\n }\n var id = read(5);\n if (id === 'SAUCE') {\n var result = {};\n result.ID = id;\n result.version = read(2);\n result.title = read(35).trim();\n result.author = read(20).trim();\n result.group = read(20).trim();\n result.date = read(8);\n result.fileSize = int(read(4));\n result.dataType = int(read(1));\n result.fileType = int(read(1));\n var tinfo = [];\n for (var i = 0; i < 4; ++i) {\n if (offset < sauce.length) {\n tinfo.push(int(read(2)));\n }\n }\n result.tinfo = tinfo;\n if (offset < sauce.length) {\n var lines = int(read(1));\n if (lines > 0) {\n result.comments = read(lines * 64);\n }\n }\n if (offset < sauce.length) {\n result.tflags = read(1);\n }\n if (offset < sauce.length) {\n result.zstring = read(22, 'string');\n }\n return result;\n }\n }\n // -------------------------------------------------------------------------\n return {\n version: '0.3.0',\n meta: sause,\n format: format,\n html: html,\n colors: ansi_colors\n };\n});\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 2572f72..2ce3ca4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ansidec", - "version": "0.2.2", + "version": "0.3.0", "description": "Limited Unix ANSI escape sequences transformer for use in Browsers", "main": "index.js", "unpkg": "dist/ascidec.min.js",