-- this is essentially -- https://github.com/jupyter/nbconvert/blob/main/nbconvert/filters/ansi.py -- converted to lua local ANSI_COLORS = { "ansi-black", "ansi-red", "ansi-green", "ansi-yellow", "ansi-blue", "ansi-magenta", "ansi-cyan", "ansi-white", "ansi-black-intense", "ansi-red-intense", "ansi-green-intense", "ansi-yellow-intense", "ansi-blue-intense", "ansi-magenta-intense", "ansi-cyan-intense", "ansi-white-intense" } --[[ local re = require "re" local codes = { -- attributes reset = 0, bright = 1, dim = 2, underscore = 4, -- blink = 5, reverse = 7, -- hidden = 8, -- foreground black = 30, red = 31, green = 32, yellow = 33, blue = 34, magenta = 35, cyan = 36, white = 37, -- background onblack = 40, onred = 41, ongreen = 42, onyellow = 43, onblue = 44, onmagenta = 45, oncyan = 46, onwhite = 47, } local ANSI = re.compile [[ '\x1b%[' {.*?} {[@-~]} ]] --]] local function LaTeXconverter() end local function HTMLconverter(fg, bg, bold, underline, inverse) if not (fg or bg or bold or underline or inverse) then return "","" end local classes = {} local styles = {} if inverse then fg, bg = bg, fg end if type(fg) == "number" then table.insert(classes, ANSI_COLORS[fg] .. "-fg") elseif fg then table.insert("background-color: rgb(") end end function CodeBlock(e) if FORMAT:match 'latex' then local converter = LaTeXconverter elseif FORMAT:match 'html' then local converter = HTMLconverter elseif FORMAT:match 'native' then local converter = HTMLconverter else return end if string.find(e.text, "\x1b%[") then local text = e.text local out = "" -- while text do local s1, e1, c1, d1 = string.find(text, "\x1b%[(.-)([@-~])") if s1 then if d1=="m" then local numbers={} for i in string.gmatch(c1, "[^;]") do table.insert(numbers, tonumber(i)) end print(s1,numbers[1]) end end -- end end end