Module:Sandbox/Licsth

.mw-parser-output .documentation,.mw-parser-output .documentation-metadata{border:1px solid var(--border-color-base,#a2a9b1);background-color:#ecfcf4;color:inhe

Module:Sandbox/Licsth
-- 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 .. ".<br>"
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

p.times = function(frame)
	local num = tonumber( frame.args.num ) or 2
	local out = num .. " times table<br>"
	for i = 1, 12 do
		out = out .. num.. " times " .. i .. " equals " .. i * num .. "<br>"
	end
	return out
end

p.mum = function(frame)
	local family = {"Dad", "Mum", "Uncle Stan", "Aunty Elsie", "Brian", "Cousin Sharon", "Bob the cat", "Grandpa Bob"}
	local msg = ""
	for i = 1, #family do
		msg = msg .. "Hello " .. family[i] .. "<br>"
	end
	return msg
end

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 .. "<br>"
		count = count + 1
	end
	return langlist .. "<br>= " .. 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 text
end

-- 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 = "<abbr title='reign'>r</abbr>. "
	
	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 = "[[Reign|Reigned]] "
			else
				word = "[[Reign|reigned]] "
			end
		elseif show == "lcolon" then
			if cap == "y" then
				word = "[[Reign|Reign:]] "
			else
				word = "[[Reign|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 = "<span style='white-space:normal'>" .. text .. "</span>"
	else
		text = "<span style='white-space:nowrap'>" .. text .. "</span>"
	end
	
	return text
end

function trim(text)
	if text == nil then
		return nil
	else
		return mw.text.trim(text)
	end
	
end

return p

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.