Modulo:Sandbox/WHacko
La documentazione per questo modulo può essere creata in Modulo:Sandbox/WHacko/man
local p = {}
-- Restituisce il sorgente di una pagina con tutti i link che puntano a
-- linkErrato. Inoltre reindirizza [[wikilink|nomeWikilink]] a nuovoWikilink
-- e gli aggiunge un bordo rosso
function p.sostituisciLink(frame)
local nomePagina = frame.args.nomePagina
local linkErrato = frame.args.linkErrato
local wikilink = frame.args.wikilink
local nuovoWikilink = frame.args.nuovoWikilink
local nomeWikilink = frame.args.nomeWikilink and '|' .. frame.args.nomeWikilink or ''
local sorgentePagina = frame:expandTemplate{ title = ':' .. nomePagina }
local escapedWikilink = ''
if wikilink then
escapedWikilink = mw.ustring.gsub(wikilink, '([%-%(%)])', '%%%1')
end
-- Rimuovi categorie ma tieni l'avviso sulla pagina del corso
sorgentePagina = mw.ustring.gsub(sorgentePagina, 'puoi %[%[:Categoria:Corso di .-|crearla%]%] tu sei vuoi!',
'puoi [[' .. linkErrato .. '|crearla]] tu sei vuoi!')
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-Categoria:.-%]%]', '')
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-:Categoria:.-%]%]', '')
-- Espandi sottopagine
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[:[^|]-' .. mw.title.getCurrentTitle().text .. '(/[^/|]-)%]%]',
function (n)
return frame:expandTemplate{ title = ':' .. nomePagina .. n }
end)
-- Rimuovi titolo modificato
sorgentePagina = mw.ustring.gsub(sorgentePagina, '<div id="RealTitleBanner".-</div>', '')
-- Per prima cosa, marca i link che non vogliamo reindirizzare
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-File:', '[{[File:')
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-Image:', '[{[Image:')
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-Immagine:', '[{[Immagine:')
if wikilink then
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-' .. escapedWikilink, '[{[' .. wikilink)
end
-- Sostituisci {{FULLPAGENAME}} e {{PAGENAME}}
sorgentePagina = mw.ustring.gsub(sorgentePagina, mw.title.getCurrentTitle().prefixedText, nomePagina)
sorgentePagina = mw.ustring.gsub(sorgentePagina, mw.title.getCurrentTitle().text, nomePagina)
-- Fix link di modifica alle sottopagine
sorgentePagina = mw.ustring.gsub(sorgentePagina, 'w/index.php%?title=.-&action=edit',
'w/index.php?title=' .. mw.ustring.gsub(linkErrato, '%s', '_'))
-- Reindirizza tutti gli altri link a linkErrato
-- First we remove all wikilinks to differentiate between those that are labelled
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[[^%]]-|', '[[')
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[', '[[' .. linkErrato .. '|')
-- Fix the links that we have marked previously
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[{%[', '[[')
-- Add red border to marked link
if wikilink then
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-' .. escapedWikilink .. '(.-%]%])',
'<span style="border:3px solid red;">[[' .. nuovoWikilink .. '%1</span>')
end
return sorgentePagina
end
function p.stampa(frame)
local nomePagina = frame.args.nomePagina
local linkErrato = frame.args.linkErrato
local wikilink = frame.args.wikilink
local nuovoWikilink = frame.args.nuovoWikilink
local nomeWikilink = frame.args.nomeWikilink and '|' .. frame.args.nomeWikilink or ''
local sorgentePagina = frame:expandTemplate{ title = ':' .. nomePagina }
-- Rimuovi categorie
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-Categoria:.-%]%]', '')
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-:Categoria:.-%]%]', '')
-- Espandi sottopagine
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[:[^|]-' .. mw.title.getCurrentTitle().text .. '(/[^/|]-)%]%]',
function (n)
return frame:expandTemplate{ title = ':' .. nomePagina .. n }
end)
-- Rimuovi titolo modificato
sorgentePagina = mw.ustring.gsub(sorgentePagina, '<div id="RealTitleBanner".-</div>', '')
-- Per prima cosa, marca i link che non vogliamo reindirizzare
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-File:', '[{[File:')
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-Image:', '[{[Image:')
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-Immagine:', '[{[Immagine:')
-- Print
local allLinks = {}
allLinks[#allLinks+1] = mw.text.nowiki(nomePagina)
allLinks[#allLinks+1] = mw.text.nowiki(wikilink)
for link in mw.ustring.gmatch(sorgentePagina, '....' .. wikilink .. '..............') do
allLinks[#allLinks+1] = mw.text.nowiki(link)
end
for link in mw.ustring.gmatch(sorgentePagina, '%[%[%s-' .. wikilink) do
allLinks[#allLinks+1] = mw.text.nowiki(link)
end
if wikilink then
sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-' .. wikilink, '[{[' .. wikilink)
end
-- Print
local allLinks = {}
for link in mw.ustring.gmatch(sorgentePagina, wikilink .. '.-%]%]') do
allLinks[#allLinks+1] = mw.text.nowiki(link)
end
return table.concat(allLinks, '\n\n')
end
return p