Jump to content

Module:Legislationuk/test

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Theknightwho (talk | contribs) at 11:39, 19 January 2022. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
local p = {}

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

return p