Sha256: c9ab3dcb11850a3eede7291bf63e73d01139260c7d8f72e378171e66b7db0a19

Contents?: true

Size: 1.56 KB

Versions: 3

Compression:

Stored size: 1.56 KB

Contents

var ansispan = function (str) {
  Object.keys(ansispan.foregroundColors).forEach(function (ansi) {

    //
    // `\033[Xm` == `\033[0;Xm` sets foreground color to `X`.
    //
    str = str.replace(
      new RegExp('\033\\[' + ansi + 'm', 'g'),
      '<span style="color: ' + ansispan.foregroundColors[ansi] + '">'
    ).replace(
      new RegExp('\033\\[0;' + ansi + 'm', 'g'),
      '<span style="color: ' + ansispan.foregroundColors[ansi] + '">'
    ).replace(
      new RegExp('\033\\[1;' + ansi + 'm', 'g'),
      '<span style="color: ' + ansispan.brightForegroundColors[ansi] + '">'
    );
  });
  //
  // `\033[1m` enables bold font, `\033[22m` disables it or \033[0m` resets
  //
  str = str.replace(/\033\[1m/g, '<b>').replace(/\033\[22m/g, '</b>');
  str = str.replace(/\033\[1m/g, '<b>').replace(/\033\[0m/g, '</b>');

  //
  // `\033[3m` enables italics font, `\033[23m` disables it or \033[0m resets
  //
  str = str.replace(/\033\[3m/g, '<i>').replace(/\033\[23m/g, '</i>');
  str = str.replace(/\033\[3m/g, '<i>').replace(/\033\[0m/g, '</i>');

  str = str.replace(/\033\[m/g, '</span>');
  return str.replace(/\033\[39m/g, '</span>');
};

ansispan.foregroundColors = {
  '30': 'black',
  '31': 'red',
  '32': 'green',
  '33': 'yellow',
  '34': '#00bbbb',
  '35': 'purple',
  '36': 'cyan',
  '37': 'white'
};

ansispan.brightForegroundColors = {
  '30': 'black',
  '31': 'red',
  '32': 'green',
  '33': 'yellow',
  '34': '#00bbbb',
  '35': 'purple',
  '36': 'cyan',
  '37': 'white'
};

if (typeof module == "object" && typeof window == "undefined") {
  module.exports = ansispan;
}

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
torquebox-console-0.1.4 public/ansispan.js
torquebox-console-0.1.3 public/ansispan.js
torquebox-console-0.1.2 public/ansispan.js