-- Google Code-in 2017, Introduction to Lua in Wikipedia
-- Google Code-in 2017, Lua task 3: Create your own Lua module on English Wikipedia
local p = -- p stands for package
function p.hello(frame) return "Hello, world!"end
p.Hi = function(frame) strName = frame.args.name or "Jimbo" return "Hello from Lua to my friend " .. strName .. ".
"end
function p.temperature(frame) cel = tonumber(frame.args.celsius) or 0 fah = cel * 9 / 5 + 32 msg = cel .. " degrees Celsius is " .. fah .." degrees Fahrenheit." if cel > 9 then msg = msg .. " It is warm." else msg = msg .. " It is cold." end return msgend
p.times = function(frame) local num = tonumber(frame.args.num) or 2 local out = num .. " times table
" for i = 1, 12 do out = out .. num.. " times " .. i .. " equals " .. i * num .. "
" end return outend
p.mum = function(frame) local family = local msg = "" for i = 1, #family do msg = msg .. "Hello " .. family[i] .. "
" end return msgend
p.langnames = function(frame) local langs = mw.language.fetchLanguageNames local langlist = "" local count = 0 for key, value in pairs(langs) do langlist = langlist .. key .. " - " .. value .. "
" count = count + 1 end return langlist .. "
= " .. count .. " languages"end
p.pageinfo = function(frame) local ttl = frame.args.title local ttlobj = mw.title.new(ttl) local existing = ttlobj.exists local redirected = ttlobj.isRedirect local text = ttl if existing then text = text .. " exists and is" else text = text .. " does not exist and is" end if redirected then text = text .. " a redirect." else text = text .." not a redirect." end return textend
-- Google Code-in 2017/18, Task 10
p.reign = function(frame) local text = "" local between = "– " local between2 = "– " local startdate = frame.args[1] or "?" startdate = trim(startdate) if startdate
"" then startdate2 = "?" end local enddate2 = frame.args[4] or "" enddate2 = trim(enddate2) if string.find(startdate2, " ") or string.find(enddate2, " ") then between2 = " – " end local show = frame.args['show'] show = trim(show) local era = frame.args.era or "" era = trim(era) local label = frame.args.label label = trim(label) local post_date = frame.args['post_date'] or frame.args['post-date'] or frame.args['postdate'] post_date = trim(post_date) local pre_date = frame.args['pre_date'] or frame.args['pre-date'] or frame.args['predate'] pre_date = trim(pre_date) local single = frame.args.single single = trim(single) local wraps = frame.args['wrap'] wraps = trim(wraps) local mid_date = frame.args['mid_date'] or frame.args['mid-date'] or frame.args['middate'] mid_date = trim(mid_date) local cap = frame.args.cap cap = trim(cap) local word = "r. " if not label then if show
"y" then word = "Reigned " else word = "reigned " end elseif show
"y" then word = "Reign: " else word = "reign: " end elseif show
"y" then word = "Reigned " else word = "reigned " end elseif show
"y" then word = "Reign: " else word = "reign: " end elseif show
"y" then text = "
" .. text .. "" else text = "" .. text .. "" end return textendfunction trim(text) if text
return p