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 10:51, 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, legCitation
	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 ) ) }
		--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
	end
	o = leg[ "legCitation" ]
	return o
end

return p