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