text: export const ansispan = function(str) {
  	str = str.replace(/>/g, '&gt;');
  	str = str.replace(/</g, '&lt;');
  
  	Object.keys(ansispan.foregroundColors).forEach(function(ansi) {
  		const span = `<span style="color: ${ ansispan.foregroundColors[ansi] }">`;
  
  		//
  		// `\033[Xm` == `\033[0;Xm` sets foreground color to `X`.
  		//
  
  		str = str.replace(
  			new RegExp(`\0o33\\[${ ansi }m`, 'g'),
  			span
  		).replace(
  			new RegExp(`\0o33\\[0;${ ansi }m`, 'g'),
  			span
  		);
  	});
  	//
  	// `\033[1m` enables bold font, `\033[22m` disables it
  	//
  	str = str.replace(/\033\[1m/g, '<b>').replace(/\033\[22m/g, '</b>');
  
  	//
  	// `\033[3m` enables italics font, `\033[23m` disables it
  	//
  	str = str.replace(/\033\[3m/g, '<i>').replace(/\033\[23m/g, '</i>');
  
  	str = str.replace(/\033\[m/g, '</span>');
  	str = str.replace(/\033\[0m/g, '</span>');
  	return str.replace(/\033\[39m/g, '</span>');
  };
  
  ansispan.foregroundColors = {
  	30: 'gray',
  	31: 'red',
  	32: 'lime',
  	33: 'yellow',
  	34: '#6B98FF',
  	35: '#FF00FF',
  	36: 'cyan',
  	37: 'white',
  };
  