diff --git a/IPython/html/static/base/js/utils.js b/IPython/html/static/base/js/utils.js
index 00196c7d5..dcaf15a22 100644
--- a/IPython/html/static/base/js/utils.js
+++ b/IPython/html/static/base/js/utils.js
@@ -158,7 +158,7 @@ IPython.utils = (function (IPython) {
//Map from terminal commands to CSS classes
var ansi_colormap = {
"01":"ansibold",
-
+
"30":"ansiblack",
"31":"ansired",
"32":"ansigreen",
@@ -167,7 +167,7 @@ IPython.utils = (function (IPython) {
"35":"ansipurple",
"36":"ansicyan",
"37":"ansigray",
-
+
"40":"ansibgblack",
"41":"ansibgred",
"42":"ansibggreen",
@@ -197,11 +197,21 @@ IPython.utils = (function (IPython) {
var index_or_rgb = numbers.shift();
var r,g,b;
if (index_or_rgb == "5") {
+ // indexed 256 color
var idx = parseInt(numbers.shift());
if (idx < 16) {
- // indexed color, not supported
+ // indexed ANSI
+ // ignore bright / non-bright distinction
+ idx = idx % 8;
+ var ansiclass = ansi_colormap[n[0] + (idx % 8).toString()];
+ if ( ! attrs["class"] ) {
+ attrs["class"] = ansiclass;
+ } else {
+ attrs["class"] += " " + ansiclass;
+ }
+ return;
} else if (idx < 232) {
- // 216 color 6x6x6
+ // 216 color 6x6x6 RGB
idx = idx - 16;
b = idx % 6;
g = Math.floor(idx / 6) % 6;
@@ -215,14 +225,14 @@ IPython.utils = (function (IPython) {
idx = idx - 231;
// it's 1-24 and should *not* include black or white,
// so a 26 point scale
- r = g = b = idx * 256 / 26;
+ r = g = b = Math.floor(idx * 256 / 26);
}
} else if (index_or_rgb == "2") {
+ // Simple 24 bit RGB
if (numbers.length > 3) {
console.log("Not enough fields for RGB", numbers);
return;
}
- // simple rgb
r = numbers.shift();
g = numbers.shift();
b = numbers.shift();