diff --git a/plugins/hexyl.lua b/plugins/hexyl.lua new file mode 100644 index 00000000..b98ad285 --- /dev/null +++ b/plugins/hexyl.lua @@ -0,0 +1,21 @@ +-- Note: this plugin depends on the existence of 'inspect' [1] and 'hexyl' [2] +-- +-- [1] https://github.com/sharkdp/content_inspector +-- [2] https://github.com/sharkdp/hexyl + +function is_binary(path) + local stream = assert(io.popen("inspect '" .. path .. "'")) + local output = stream:read('*all') + stream:close() + return string.find(output, ": binary\n") +end + +function preprocess(path) + if is_binary(path) then + tmpfile = os.tmpname() + os.execute("hexyl --length 1024 --no-position --border=none --no-squeezing '" .. path .. "' > '" .. tmpfile .. "'") + return tmpfile + else + return path + end +end