#!/usr/local/bin/lua52 -- Replace all control characters with printable representations as in SciTECO. -- These characters are printed in reverse using ANSI escape sequences. -- This is especially useful as the diff textconv filter for Git as in -- git config --global diff.teco.textconv tecat local file = #arg > 0 and io.open(arg[1], 'rb') or io.stdin while true do local buf = file:read(1024) if not buf then break end io.write((buf:gsub("[\00-\08\11\12\14-\31]", function(c) c = c:byte() return "\27[7m"..(c == 27 and '$' or '^'..string.char(c+0x40)).."\27[27m" end))) end