coverting ansi to rgb - gitbbln/gitbbln.github.io GitHub Wiki

const low_rgb = [
  '#000000', '#800000', '#008000', '#808000', '#000080', '#800080', '#008080', '#c0c0c0',
  '#808080', '#ff0000', '#00ff00', '#ffff00', '#0000ff', '#ff00ff', '#00ffff', '#ffffff'
]

function ansi_rgb(ansi) {
  if (ansi < 0 || ansi > 255) return '#000'
  if (ansi < 16) return low_rgb[ansi]

  if (ansi > 231) {
    const s = (ansi - 232) * 10 + 8
    return `rgb(${s},${s},${s})`
  }

  const n = ansi - 16
  let b = n % 6
  let g = (n - b) / 6 % 6
  let r = (n - b - g * 6) / 36 % 6
  b = b ? b * 40 + 55 : 0
  r = r ? r * 40 + 55 : 0
  g = g ? g * 40 + 55 : 0

  return `rgb(${r},${g},${b})`
}