From Wikipedia, the free encyclopedia

local p = {}



local math_module = require("Module:Math")



local function rnd(num, digits)

	-- This function implements {{rnd}}

	return math_module._precision_format(tostring(num), digits)

end



function p.ifexists(frame)

	page = frame.args1

	if not page then return (frame.args'no' or '') end

    if mw.title.new(page).exists then return (frame.args'yes' or 'yes') end

	return (frame.args'no' or '')

end



function p.lists(frame)

	local s = '\n' .. (frame.args1 or '') .. '\n'

	s = mw.ustring.gsub(s, '([\r\n])%*([^\r\n]*)', '%1<ul><li>%2</li></ul>')

	s = mw.ustring.gsub(s, '([\r\n])#([^\r\n]*)', '%1<ol><li>%2</li></ol>')

	s = mw.ustring.gsub(s, '</ol>%s*([\r\n]*)<ol>', '%1')

	s = mw.ustring.gsub(s, '</ul>%s*([\r\n]*)<ul>', '%1')

	s = mw.ustring.gsub(s, '^[\r\n](.*)[\r\n]$', '%1')

	return s

end



function p.precision(frame)

	return math_module._precision(frame.args1])

end



function p.wpct(frame)

	local w = tonumber(frame.args1]) or 0

	local l = tonumber(frame.args2]) or 0

	local pct = '–'

	if (w + l) > 0 then

		pct = rnd(w / (w + l), 3):gsub('^0', '')

	end

	return pct

end



function p.extractcolor(frame)

	local str = frame.args1 or ''

	local color = mw.ustring.match(';' .. str .. ';', '.*;%s*([Cc][Oo][Ll][Oo][Rr]%s*:%s*.-)%s*;')

	return color or 'NO MATCH'

end



local function getBestStatement(item_id, property_id)

	if not(item_id) or not(mw.wikibase.isValidEntityId(item_id)) or not(mw.wikibase.entityExists(item_id)) then

		return false

	end

	local statements = mw.wikibase.getBestStatements(item_id, property_id)

	if not statements or #statements == 0 then

		return false

	end

	local hasNoValue = ( statements1].mainsnak and statements1].mainsnak.snaktype == 'novalue' )

	if hasNoValue then

		return false

	end

	return statements1

end



function p.hasOSM(frame)

	return getBestStatement(mw.wikibase.getEntityIdForCurrentPage(), 'P402') and 'yes' or 'no'

end



function p.main(frame)

	local getArgs = require('Module:Arguments').getArgs

	local args = getArgs(frame, {parentFirst = true,

	valueFunc = function (key, val)

		if key == 'text_IPS' then

			return nil

		end

		if type(val) == 'string' then

			val = val:match('^%s*(.-)%s*$')

			if val == '' then

				return nil

			else

				return val

			end

		else

			return val

		end

	end

	})

	local team_list = {}

	local ii = 1

	while args'team'..ii ~= nil do

		team_listargs'team'..ii]] = ii

		ii = ii + 1

	end

	local max_team = ii - 1

	

	local first_team, last_team = 1, max_team

	if args'showteam' and team_listargs'showteam']] then

		first_team = team_listargs'showteam']] - 2

		last_team = first_team + 4

		if first_team < 1 then

			first_team = 1

			last_team = first_team + 4

		end

		if last_team > max_team then

			last_team = max_team

			first_team = max_team - 4

		end

		if first_team < 1 then first_team = 1 end

	end

		

	local hasnotes = false

	

	local ii = first_team

	local res = '{| class="wikitable"\n'

	res = res .. '! Pos. !! Team !! Result\n'

	while args'team'..ii ~= nil and (ii <= last_team) do

		res = res .. '|-\n'

		res = res .. '| ' .. ii .. '\n'

		res = res .. '| ' .. (args'name_'..args'team' .. ii]] or '') .. '\n'

		local text_result = args'result'..ii and args'text_'..args'result'..ii]] or ''

		local style_text = ''

		if text_result:match('fbmulticompefn') then

			hasnotes = true

			style_text = style_text .. 'padding:0;'

		end

		style_text = style_text .. (args'result'..ii and ('background:' .. args'col_'..args'result'..ii]]) or '')

		res = res .. '| style="' .. style_text .. '" | ' .. text_result .. '\n'

		ii = ii + 1

	end

	res = res .. '|}'

	

	if hasnotes == true then

		res = res .. '<b>Table notes:</b>' .. frame:expandTemplate{ title = 'notelist'}

	end

	

	-- Generate tracking

	if not args'notracking' then

		-- Step 1: Generate a team and result list

		for k,v in pairs(args) do

			-- nothing

		end

	end



	return res

end



return p
From Wikipedia, the free encyclopedia

local p = {}



local math_module = require("Module:Math")



local function rnd(num, digits)

	-- This function implements {{rnd}}

	return math_module._precision_format(tostring(num), digits)

end



function p.ifexists(frame)

	page = frame.args1

	if not page then return (frame.args'no' or '') end

    if mw.title.new(page).exists then return (frame.args'yes' or 'yes') end

	return (frame.args'no' or '')

end



function p.lists(frame)

	local s = '\n' .. (frame.args1 or '') .. '\n'

	s = mw.ustring.gsub(s, '([\r\n])%*([^\r\n]*)', '%1<ul><li>%2</li></ul>')

	s = mw.ustring.gsub(s, '([\r\n])#([^\r\n]*)', '%1<ol><li>%2</li></ol>')

	s = mw.ustring.gsub(s, '</ol>%s*([\r\n]*)<ol>', '%1')

	s = mw.ustring.gsub(s, '</ul>%s*([\r\n]*)<ul>', '%1')

	s = mw.ustring.gsub(s, '^[\r\n](.*)[\r\n]$', '%1')

	return s

end



function p.precision(frame)

	return math_module._precision(frame.args1])

end



function p.wpct(frame)

	local w = tonumber(frame.args1]) or 0

	local l = tonumber(frame.args2]) or 0

	local pct = '–'

	if (w + l) > 0 then

		pct = rnd(w / (w + l), 3):gsub('^0', '')

	end

	return pct

end



function p.extractcolor(frame)

	local str = frame.args1 or ''

	local color = mw.ustring.match(';' .. str .. ';', '.*;%s*([Cc][Oo][Ll][Oo][Rr]%s*:%s*.-)%s*;')

	return color or 'NO MATCH'

end



local function getBestStatement(item_id, property_id)

	if not(item_id) or not(mw.wikibase.isValidEntityId(item_id)) or not(mw.wikibase.entityExists(item_id)) then

		return false

	end

	local statements = mw.wikibase.getBestStatements(item_id, property_id)

	if not statements or #statements == 0 then

		return false

	end

	local hasNoValue = ( statements1].mainsnak and statements1].mainsnak.snaktype == 'novalue' )

	if hasNoValue then

		return false

	end

	return statements1

end



function p.hasOSM(frame)

	return getBestStatement(mw.wikibase.getEntityIdForCurrentPage(), 'P402') and 'yes' or 'no'

end



function p.main(frame)

	local getArgs = require('Module:Arguments').getArgs

	local args = getArgs(frame, {parentFirst = true,

	valueFunc = function (key, val)

		if key == 'text_IPS' then

			return nil

		end

		if type(val) == 'string' then

			val = val:match('^%s*(.-)%s*$')

			if val == '' then

				return nil

			else

				return val

			end

		else

			return val

		end

	end

	})

	local team_list = {}

	local ii = 1

	while args'team'..ii ~= nil do

		team_listargs'team'..ii]] = ii

		ii = ii + 1

	end

	local max_team = ii - 1

	

	local first_team, last_team = 1, max_team

	if args'showteam' and team_listargs'showteam']] then

		first_team = team_listargs'showteam']] - 2

		last_team = first_team + 4

		if first_team < 1 then

			first_team = 1

			last_team = first_team + 4

		end

		if last_team > max_team then

			last_team = max_team

			first_team = max_team - 4

		end

		if first_team < 1 then first_team = 1 end

	end

		

	local hasnotes = false

	

	local ii = first_team

	local res = '{| class="wikitable"\n'

	res = res .. '! Pos. !! Team !! Result\n'

	while args'team'..ii ~= nil and (ii <= last_team) do

		res = res .. '|-\n'

		res = res .. '| ' .. ii .. '\n'

		res = res .. '| ' .. (args'name_'..args'team' .. ii]] or '') .. '\n'

		local text_result = args'result'..ii and args'text_'..args'result'..ii]] or ''

		local style_text = ''

		if text_result:match('fbmulticompefn') then

			hasnotes = true

			style_text = style_text .. 'padding:0;'

		end

		style_text = style_text .. (args'result'..ii and ('background:' .. args'col_'..args'result'..ii]]) or '')

		res = res .. '| style="' .. style_text .. '" | ' .. text_result .. '\n'

		ii = ii + 1

	end

	res = res .. '|}'

	

	if hasnotes == true then

		res = res .. '<b>Table notes:</b>' .. frame:expandTemplate{ title = 'notelist'}

	end

	

	-- Generate tracking

	if not args'notracking' then

		-- Step 1: Generate a team and result list

		for k,v in pairs(args) do

			-- nothing

		end

	end



	return res

end



return p

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook