Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:Legislationuk/test

From Wikipedia, the free encyclopedia
local p = {}

function p.main( frame )
	if frame:getParent().args[ 1 ] then args = frame:getParent().args else args = frame.args end
	local qid, snakShort, snakLong, snakDate, snakSession, snakCitation, snaklegGovUK
	local o = ""
	local leg = {}
	for _,v in pairs( args ) do
		qid = args[ _ ]
		--short title
		snakShort = mw.wikibase.getBestStatements( qid, 'P1813' )
		leg.Short = {}
		for __,vv in ipairs( snakShort ) do
			if snakShort[ __ ].mainsnak.datavalue.value.language == "en" then
				leg.Short.en = snakShort[ __ ].mainsnak.datavalue.value.text
			elseif snakShort[ __ ].mainsnak.datavalue.value.language == "cy" then
				leg.Short.cy = snakShort[ __ ].mainsnak.datavalue.value.text
			end
		end
		--long title
		snakLong = mw.wikibase.getBestStatements( qid, 'P1448' )
		leg.Long = {}
		for __,vv in ipairs( snakLong ) do
			if snakLong[ __ ].mainsnak.datavalue.value.language == "en" then
				leg.Long.en = snakLong[ __ ].mainsnak.datavalue.value.text
			elseif snakLong[ __ ].mainsnak.datavalue.value.language == "cy" then
				leg.Long.cy = snakLong[ __ ].mainsnak.datavalue.value.text
			end
		end
		--date
		snakDate = mw.ustring.sub( mw.wikibase.getBestStatements( qid, 'P7589' )[1].mainsnak.datavalue.value.time, 2, 11 )
		leg.Date = os.time { day = tonumber( mw.ustring.sub( snakDate, 9, 10 ) ), month = tonumber( mw.ustring.sub( snakDate, 6, 7 ) ), year = tonumber( mw.ustring.sub( snakDate, 1, 4 ) ) }
		--session
		snakSession = mw.wikibase.getBestStatements( qid, 'P2937' )
		for __,vv in ipairs( snakSession ) do
			leg.Session = snakSession[ __ ].mainsnak.datavalue.value.id
		end
		--citation
		snakCitation = mw.wikibase.getBestStatements( qid, 'P1031' )
		leg.Citation = {}
		for __,vv in ipairs( snakCitation ) do --for each citation statement
			if snakCitation[ __ ].qualifiers then --if there are qualifiers
				if snakCitation[ __ ].qualifiers.P1001 and snakCitation[ __ ].qualifiers.P407 then --if it has jurisdiction and language
					local c = 0
					for ___,vvvv in ipairs( snakCitation[ __ ].qualifiers.P1001 ) do --for each jurisdiction
						if snakCitation[ __ ].qualifiers.P1001[ ___ ].datavalue.value.id == "Q145" then c = c + 4 end --if jurisdiction is UK
					end
					for ___,vvvv in ipairs( snakCitation[ __ ].qualifiers.P407 ) do --for each language
						if snakCitation[ __ ].qualifiers.P1001[ ___ ].datavalue.value.id == "Q1860" then c = c + 2 --if language is English
						elseif snakCitation[ __ ].qualifiers.P1001[ ___ ].datavalue.value.id == "Q9309" then c = c + 1 --if langauge is Welsh
						end
					end
					if c == 6 then  leg.Citation.en = snakCitation[ __ ].mainsnak.datavalue.value --if jurisdiction is UK and language English
					elseif c == 5 then leg.Citation.cy = snakCitation[ __ ].mainsnak.datavalue.value --if jurisdiction is UK and language Welsh
					end
					c = 0
				elseif snakCitation[ __ ].qualifiers.P1001 then --if it has jurisdiction but not language
					for ___,vvvv in ipairs( snakCitation[ __ ].qualifiers.P1001 ) do --for each jurisdiction
						if snakCitation[ __ ].qualifiers.P1001[ ___ ].datavalue.value.id == "Q145" then
							leg.Citation.en = snakCitation[ __ ].mainsnak.datavalue.value
						end
					end
				elseif snakCitation[ __ ].qualifiers.P407 then --if it has language but not jurisdiction
					for ___,vvvv in ipairs( snakCitation[ __ ].qualifiers.P407 ) do --for each language
						if snakCitation[ __ ].qualifiers.P407[ ___ ].datavalue.value.id == "Q1860" then --if language is English
							leg.Citation.en = snakCitation[ __ ].mainsnak.datavalue.value
					elseif snakCitation[ __ ].qualifiers.P407[ ___ ].datavalue.value.id == "Q9309" then --if langauge is Welsh
							leg.Citation.cy = snakCitation[ __ ].mainsnak.datavalue.value
						end
					end
				else
					leg.Citation.en = snakCitation[ __ ].mainsnak.datavalue.value --if no relevant qualifiers
				end
			else
				leg.Citation.en = snakCitation[ __ ].mainsnak.datavalue.value --if no qualifiers
			end
		end
		--legislation.gov.uk ID
		snaklegGovUK = mw.wikibase.getBestStatements( qid, 'P3343' )
		for __,vv in ipairs( snaklegGovUK ) do
			leg.GovUK = "https://www.legislation.gov.uk/id/" .. snaklegGovUK[ __ ].mainsnak.datavalue.value
		end
		o = o .. " " .. leg.Short.en
	end
	return o
end

return p