diff options
Diffstat (limited to 'tecat.lua')
-rwxr-xr-x | tecat.lua | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/tecat.lua b/tecat.lua new file mode 100755 index 0000000..e287658 --- /dev/null +++ b/tecat.lua @@ -0,0 +1,14 @@ +#!/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 |