Modul:Utvald artikkeltittel

Frå Wikipedia – det frie oppslagsverket

Dokumentasjon for modulen kan opprettast på Modul:Utvald artikkeltittel/dok


local eksport = {}


function eksport.tittelformat(aar, veke) -- tittelformatet har endra seg
	if tonumber(aar) <= 2013 or (tonumber(aar) == 2014 and tonumber(veke) < 34) then 
		tittel = mw.title.new(string.format('Wikipedia:Vekas artikkel/Veke %d, %d', veke, aar))
	else
		tittel = mw.title.new(string.format('Wikipedia:Utvald artikkel/Veke %d, %d', veke, aar))
	end
	return tittel
end

function eksport.hovud(frame)
	local veke = tonumber(frame:getParent().args[1])
	local aar = tonumber(frame:getParent().args[2])
	local neste = tonumber(frame:getParent().args['neste'])
	local maanadNo =  tonumber(os.date('%m'))
	if not aar then 
		aar =  tonumber(os.date('%Y'))
	end

	local tittel

	if neste and veke == 52 and maanadNo == 1 then -- unngå problem med veke 52  i januar
		if neste < 0 then
			aar = aar - 1
		else
			veke = 0
		end
	end
	if neste then
		veke = veke + neste -- utan modulo; årsskifte vert handsama under
	end
	
	if veke <= 0 then -- handsam årsskifte
		veke53 = eksport.tittelformat(aar - 1, 53):getContent() ~= nil -- finst det ein artikkel for veke 53?
		if veke53 and eksport.tittelformat(aar - 1, 53):getContent():lower():match('#[ ]*omdir') then
			veke53 = false
		end
		if veke53 then
			tittel = eksport.tittelformat(aar - 1, 53 + veke)
		else
			tittel = eksport.tittelformat(aar - 1, 52 + veke)
		end
	elseif veke >= 52 then
		veke53 = eksport.tittelformat(aar, 53):getContent() ~= nil -- finst det ein artikkel for veke 53?
		if veke53 and eksport.tittelformat(aar, 53):getContent():lower():match('#[ ]*omdir') then
			veke53 = false
		end
		if veke53 then
			if veke ~= 53 then
				aar = aar + 1
				veke = veke % 53
			end
			tittel = eksport.tittelformat(aar, veke)
		else
			if veke ~= 52 then
				aar = aar + 1
				veke = veke % 52
			end
			tittel = eksport.tittelformat(aar, veke)
		end
	else
		tittel = eksport.tittelformat(aar, veke)
	end
	
	local utvaldTekst = tittel:getContent()
	local utvaldArtikkelTittel, artikkeltittel, lenkjeskildring
	local treff
	if utvaldTekst  then
		utvaldArtikkelTittel = mw.ustring.gmatch(utvaldTekst,  "([']+%[%[:nn:[^]]+|[^]]+%]%][']+)")()
		if utvaldArtikkelTittel then
			artikkeltittel = mw.ustring.gmatch(utvaldArtikkelTittel, ':nn:([^]]+)|')()
			artikkeltittel = artikkeltittel:gsub('_', ' ') -- passar på at det ikkje vert gjort skil på _ og mellorom
			lenkjeskildring =  mw.ustring.gmatch(utvaldArtikkelTittel, '|([^]]+)%]')()
			
			str, talMellomromAT = string.gsub(artikkeltittel, ' ', '') -- talet på mellomrom i artikkeltittelen
			str, talMellomromLS = string.gsub(lenkjeskildring, ' ', '')
			
			-- likt tal på mellomrom men ulik artikkeltittel og lenkjeskildring kan tyda på at artikkeltittelen bør brukast som skildring (t.d. 'villsvin' og ikkje 'villsvinet')
			if talMellomromAT == talMellomromLS and artikkeltittel ~= lenkjeskildring then 
				utvaldArtikkelTittel = utvaldArtikkelTittel:gsub('|' .. lenkjeskildring .. '%]', '|' .. artikkeltittel .. ']')
			end
		end
		
		if not utvaldArtikkelTittel then -- finn tittelen dersom det ikkje er iw-lenkje i oppslagsordet
			utvaldArtikkelTittel = mw.ustring.gmatch(utvaldTekst,  "([']+%[%[[^]]+%]%][']+)")()
		end
		
		utvaldArtikkelTittel = utvaldArtikkelTittel:gsub("'''", '') -- fjern feitt format
		--utvaldArtikkelTittel = mw.ustring.upper(mw.ustring.sub(utvaldArtikkelTittel, 1, 1)) .. mw.ustring.sub(utvaldArtikkelTittel, 2) -- stor fyrstbokstav på alle titlar
	else
		utvaldArtikkelTittel = nil
	end

	if utvaldArtikkelTittel then
		return utvaldArtikkelTittel
	else
		return string.format('Ingen artikkel  er utvald for veke %d, %d.', veke, aar)
	end
end

return eksport