Moduuli:Elon

Wikipediasta
Siirry navigaatioon Siirry hakuun

Moduulia voi käyttää vanhojen http://www.elonet.fi/title/ek- ja http://www.elonet.fi/name/he-tyyppisten Elonet-linkkien korvaamiseen nykyaikaisilla Elonet-linkeillä. Moduuli muuttaa ainoastaan kokonaisia linkkejä, ei siis esimerkiksi mallinekutsujen sisällä olevia tunnisteita.

Käyttö:

Napsauta vanhaa tyyppiä olevia Elonet-linkkejä sisältävän artikkelin muokkaa wikitekstiä -linkkiä, korvaa sivun sisältö tekstillä

{{subst:#invoke:Elon|korjuu}}


ja tallenna sivu. Muista täyttää yhteenvetokenttä esimerkiksi tekstillä Elonet-linkin päivitys tai Elonet-linkkien päivitystä. Ennen sivun tallentamista tarkista Näytä muutokset -painikkeen avulla, että moduuli toimii oikein. Moduulin käyttäjän vastuulla on myös varmistaa moduulin muokkaamien Elonet-linkkien toimivuus napsauttamalla ne kertaalleen läpi ja katsomalla, että linkit johtavat oikealle sivulle.


local p = {}

-- muodostaa uudentyyppisen Elonet-elokuvalinkin
local function eklinkki( merkkijono )
    local mjono = merkkijono
    local tunniste = string.sub( mjono, 1, -2 )
    local tulos

	tulos = 'https://www.elonet.fi/fi/elokuva/'..tonumber(tunniste,36)

	if string.sub(mjono, -1) ~= '/' then
    	tulos = tulos .. string.sub(mjono, -1)
    end

    return tulos
end


-- muodostaa uudentyyppisen Elonet-henkilölinkin
local function helinkki( merkkijono )
    local mjono = merkkijono
    local tunniste = string.sub( mjono, 1, -2 )
    local tulos
	tulos = 'https://www.elonet.fi/fi/henkilo/'..tonumber(tunniste,36) 

	if string.sub(mjono, -1) ~= '/' then
    	tulos = tulos .. string.sub(mjono, -1)
    end
    
    return tulos
end


-- Vanhoilla Elonet-tunnisteilla varustettuja linkkejä korjaava funktio.
function p.korjuu(frame)
    local title = mw.title.getCurrentTitle()
	local s = title:getContent()
	assert(s, 'Valitettavasti sivun sisällön hakeminen ei onnistunut')

	-- Karsitaan ensin viimeisen /-merkin jälkeinen osa pois vanhoista
	-- http?://????elonet.fi/title/ek???/???-tyyppisistä linkeistä, 
	-- koska noilla loppuosilla ei ole merkitystä nykyään.
	if string.find(s,'https?://.?.?.?.?elonet.fi/title/ek[%a%d][%a%d]-/[%a%d%#][%a%d%#]-[%s|<%]]') ~= nil then
		s = string.gsub(s, '(https?://.?.?.?.?elonet.fi/title/ek[%a%d][%a%d]-/)[%a%d%#][%a%d%#]-([%s|<%]])', 
			'%1'..'%2')
	end
	
	-- Korjataan ek-tunnisteen sisältävät Elonet-linkit
	if string.find(s,'https?://.?.?.?.?elonet.fi/title/ek[%a%d][%a%d]-[/|\n%s%]<]') ~= nil then
		s = string.gsub(s, 'https?://.?.?.?.?elonet.fi/title/ek([%a%d][%a%d]-[/|\n%s%]<])', 
			eklinkki)
	end
	

	-- Karsitaan ensin viimeisen /-merkin jälkeinen osa pois vanhoista
	--  http?://www.elonet.fi/name/he???/???-tyyppisistä 
	-- linkeistä, koska noilla loppuosilla ei ole merkitystä nykyään.
	if string.find(s,'https?://.?.?.?.?elonet.fi/name/he[%a%d][%a%d]-/[%a%d%#][%a%d%#]-[%s|<%]]') ~= nil then
		s = string.gsub(s, '(https?://.?.?.?.?elonet.fi/name/he[%a%d][%a%d]-/)[%a%d%#][%a%d%#]-([%s|<%]])', 
			'%1'..'%2')
	end

	-- Korjataan he-tunnisteen sisältävät Elonet-linkit
	if string.find(s,'https?://.?.?.?.?elonet.fi/name/he[%a%d][%a%d]-[/|\n%s%]<]') ~= nil then
		s = string.gsub(s, 'https?://.?.?.?.?elonet.fi/name/he([%a%d][%a%d]-[/|\n%s%]<])', 
			helinkki)
	end

	return s
end


return p