Module:Sandbox/Safan41

-- Safan41 Google Code-in, Introduction to Lua in Wikipedia -- Safan41 Google Code-in, Working with modules 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 msg end

-- Task 4

p.times = function(frame)

local num = tonumber( frame.args.num ) or 2

local out = "Times table "

for i = 1, 12 do

out = out .. num .. " times " .. i .. " equals " .. i * num .. " "

end

return num .. " " .. out

end

p.mum = function(frame)

local family = {"Dad", "Mum", "Uncle Stan", "Aunty Elsie", "Brian", "John", "Mary", "Kaneki"}

local msg = "Hello " for x = 1, #family do

msg = msg .. family[x] .. " " end

return msg

end

-- Task 5

p.sentence = function(frame)

local str = frame.args.words or ""

local out = string.upper(string.sub(str, 1, 2)) .. string.sub(str, 3)

return out

end

p.unpackdate = function(frame)

local dmydate = frame.args.dmydate or ""

local day, month, year = string.match(dmydate, "(%d+) (%w+) (%d+)")

return "Year = " .. year .. " Day = " .. day .. " Month = " .. month

end

p.test = function(frame)

local dmydate = frame.args.dmydate or ""

local month, day, year = string.match(dmydate, "(%w+) (%d+), (%d+)")

return "Year = " .. year .. " Day = " .. day .. " Month = " .. month

end

p.langnames = function(frame)

local langlist = mw.language.fetchLanguageNames

local langs = ""

local count = 0

for k, v in pairs(langlist) do

langs = langs .. k .. " - " .. v .. " "

count = count + 1

end

return langs .. " = " .. count .. " languages"

end

p.fallbacks = function(frame)

local langfallback = mw.language.getFallbacksFor(frame.args.langcode) local string = frame.args.langcode .. " -" for k, fallback in pairs(langfallback) do

string = string .. " " .. fallback

end

return string

end

p.pagename = function( frame )

local ttl = frame.args.title

local ttlobj = mw.title.new( ttl )

local txt = ttlobj.text

return txt

end

function p.pageinfo(frame) local page = mw.title.new(frame.args.title or "") function test if page.exists then exist = "exists" else exist = "does not exist" end if page.isRedirect then redirect = "" else redirect = "not" end end if not pcall(test) then return "" else test end local string = page.text .. string.format(" %s and is %s a redirect", exist, redirect) return string end

return p