Skip to content

Instantly share code, notes, and snippets.

@tj
Created February 9, 2012 01:26
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tj/1776252 to your computer and use it in GitHub Desktop.
Save tj/1776252 to your computer and use it in GitHub Desktop.
var fg = {
30: 'fg-black'
, 31: 'fg-red'
, 32: 'fg-green'
, 33: 'fg-yellow'
, 34: 'fg-blue'
, 35: 'fg-magenta'
, 36: 'fg-cyan'
, 37: 'fg-white'
, 90: 'fg-grey'
};
var bg = {
40: 'bg-black'
, 41: 'bg-red'
, 42: 'bg-green'
, 43: 'bg-yellow'
, 44: 'bg-blue'
, 45: 'bg-magenta'
, 46: 'bg-cyan'
, 47: 'bg-white'
};
var decoration = {
1: 'bold'
, 3: 'italic'
, 4: 'underline'
};
function parse(str) {
return str.replace(/\033\[(\d+(?:;\d+)*)m(.*?)(?=\033|$)/g, function(_, val, str){
var classes = val.split(';').map(function(val){
return fg[val]
|| bg[val]
|| decoration[val]
|| 'normal';
});
return '<span class="' + classes.join(' ') + '">'
+ str
+ '</span>';
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment