Module:Sandbox/Licsth Explained

-- 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 startdate = "?" end local enddate = frame.args[2] or "" enddate = trim(enddate) if string.find(startdate, " ") or string.find(enddate, " ") then between = " –
 " end local startdate2 = frame.args[3] or "?" startdate2 = trim(startdate2) if startdate2

"" 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

"word" then if cap

"y" then word = "Reigned " else word = "reigned " end elseif show

"colon" then if cap

"y" then word = "Reign: " else word = "reign: " end elseif show

"lword" then if cap

"y" then word = "Reigned " else word = "reigned " end elseif show

"lcolon" then if cap

"y" then word = "Reign: " else word = "reign: " end elseif show

"blank" then word = "" end else word = label .. " " end if not single then if not pre_date then text = word .. startdate .. between .. enddate else text = word .. pre_date .. ", " .. startdate .. between .. enddate end if startdate2 ~= "?" or enddate2 ~= "" then if mid_date then text = text .. ", " .. mid_date end text = text .. ", " .. startdate2 .. between2 .. enddate2 end if post_date then text = text .. ", " .. post_date end else text = word .. single end if era ~= "" then text = text .. " " .. era end if wraps

"y" then text = "

" .. text .. "" else text = "" .. text .. "" end return textend

function trim(text) if text

nil then return nil else return mw.text.trim(text) end end

return p