diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkiv/util-soc-imp-mime.lua')
-rw-r--r-- | Master/texmf-dist/tex/context/base/mkiv/util-soc-imp-mime.lua | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkiv/util-soc-imp-mime.lua b/Master/texmf-dist/tex/context/base/mkiv/util-soc-imp-mime.lua new file mode 100644 index 00000000000..4b5d2baff10 --- /dev/null +++ b/Master/texmf-dist/tex/context/base/mkiv/util-soc-imp-mime.lua @@ -0,0 +1,104 @@ +-- original file : mime.lua +-- for more into : see util-soc.lua + +local type, tostring = type, tostring + +local mime = require("mime.core") +local ltn12 = ltn12 or require("ltn12") + +local filtercycle = ltn12.filter.cycle + +local function report(fmt,first,...) + if logs then + report = logs and logs.reporter("mime") + report(fmt,first,...) + elseif fmt then + fmt = "mime: " .. fmt + if first then + print(format(fmt,first,...)) + else + print(fmt) + end + end +end + +mime.report = report + +local encodet = { } +local decodet = { } +local wrapt = { } + +mime.encodet = encodet +mime.decodet = decodet +mime.wrapt = wrapt + +local mime_b64 = mime.b64 +local mime_qp = mime.qp +local mime_unb64 = mime.unb64 +local mime_unqp = mime.unqp +local mime_wrp = mime.wrp +local mime_qpwrp = mime.qpwrp +local mime_eol = mime_eol +local mime_dot = mime_dot + +encodet['base64'] = function() + return filtercycle(mime_b64,"") +end + +encodet['quoted-printable'] = function(mode) + return filtercycle(mime_qp, "", mode == "binary" and "=0D=0A" or "\r\n") +end + +decodet['base64'] = function() + return filtercycle(mime_unb64, "") +end + +decodet['quoted-printable'] = function() + return filtercycle(mime_unqp, "") +end + +local wraptext = function(length) + if not length then + length = 76 + end + return filtercycle(mime_wrp, length, length) +end + +local wrapquoted = function() + return filtercycle(mime_qpwrp, 76, 76) +end + +wrapt['text'] = wraptext +wrapt['base64'] = wraptext +wrapt['default'] = wraptext +wrapt['quoted-printable'] = wrapquoted + +function mime.normalize(marker) + return filtercycle(mime_eol, 0, marker) +end + +function mime.stuff() + return filtercycle(mime_dot, 2) +end + +local function choose(list) + return function(name, opt1, opt2) + if type(name) ~= "string" then + name, opt1, opt2 = "default", name, opt1 + end + local filter = list[name or "nil"] + if filter then + return filter(opt1, opt2) + else + report("error: unknown key '%s'",tostring(name)) + end + end +end + +mime.encode = choose(encodet) +mime.decode = choose(decodet) +mime.wrap = choose(wrapt) + +package.loaded["mime"] = mime + +return mime |