Module:Base64: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
No edit summary |
No edit summary |
||
(28 intermediate revisions by the same user not shown) | |||
Line 9: | Line 9: | ||
function p.base64(frame) |
function p.base64(frame) |
||
local args |
local args |
||
local data |
|||
⚫ | |||
local encode |
|||
⚫ | |||
else |
|||
args = frame.args |
|||
end |
|||
⚫ | |||
⚫ | |||
⚫ | |||
-- encoding |
|||
local 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 |
|||
local 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^(8-i) or 0) end |
|||
return string.char(c) |
|||
end)) |
|||
end |
|||
if (encode == true) then |
|||
dec(data) |
|||
else |
else |
||
args = frame |
|||
enc(data) |
|||
end |
end |
||
⚫ | |||
⚫ | |||
⚫ | |||
return "Sorry, I gave up that time" |
|||
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