Module:Base64: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
No edit summary |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 16: | Line 16: | ||
args = frame |
args = frame |
||
end |
end |
||
data = args.data |
data = frame.args.data |
||
encode = args.encode |
encode = frame.args.encode |
||
yesno(encode, false) |
yesno(encode, false) |
||
return "Sorry, I gave up that time" |
|||
function enc(data) |
|||
return ((data:gsub('.', function(x) |
|||
local r,b='',x:byte() |
|||
for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end |
|||
return r; |
|||
end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x) |
|||
if (#x < 6) then return '' end |
|||
local c=0 |
|||
for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end |
|||
return b:sub(c+1,c+1) |
|||
end)..({ '', '==', '=' })[#data%3+1]) |
|||
end |
|||
-- decoding |
|||
function dec(data) |
|||
data = string.gsub(data, '[^'..b..'=]', '') |
|||
return (data:gsub('.', function(x) |
|||
if (x == '=') then return '' end |
|||
local r,f='',(b:find(x)-1) |
|||
for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end |
|||
return r; |
|||
end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x) |
|||
if (#x ~= 8) then return '' end |
|||
local c=0 |
|||
for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(7-i) or 0) end |
|||
return string.char(c) |
|||
end)) |
|||
end |
|||
if (encode == true) then |
|||
enc(data) |
|||
else |
|||
dec(data) |
|||
end |
|||
end |
end |
||
Latest revision as of 15:48, 14 January 2021
Documentation for this module may be created at Module:Base64/doc
-- Made by [[User:Celeste]] - Licensed under GPLv3
local p = {}
local yesno = require('Module:Yesno') -- invoke Yesno
local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' -- You will need this for encoding/decoding
function p.base64(frame)
local args
local data
local encode
if frame == mw.getCurrentFrame() then
args = frame.args
else
args = frame
end
data = frame.args.data
encode = frame.args.encode
yesno(encode, false)
return "Sorry, I gave up that time"
end
return p