Modulo:Prefisso telefonico
Aspetto
Struziune pe l'ause
Quiste jè 'nu module scritte cu 'u Lua. Le 'struziune ca stonne, avènene condenute jndr'à sottopàgene Modulo:Prefisso telefonico/man (modifica · cunde)
Sandbox: Modulo:Prefisso telefonico/sandbox (cange · cunde) · Test: Modulo:Prefisso telefonico/test (cange · cronologia · Lange)
Quiste jè 'nu module scritte cu 'u Lua. Le 'struziune ca stonne, avènene condenute jndr'à sottopàgene Modulo:Prefisso telefonico/man (modifica · cunde)
Sandbox: Modulo:Prefisso telefonico/sandbox (cange · cunde) · Test: Modulo:Prefisso telefonico/test (cange · cronologia · Lange)
Modulo che implementa il template {{Prefisso telefonico}}.
Ha una sottopagina di configurazione: Modulo:Prefisso telefonico/Configurazione.
--[[
* Modulo che implementa il template Prefisso telefonico.
]]--
require('Modulo:No globals')
local getArgs = require('Modulo:Arguments').getArgs
local mDelink = require('Modulo:Delink')
local mWikidata = require('Modulo:Wikidata')
-- Configurazione
local cfg = mw.loadData('Modulo:Prefisso telefonico/Configurazione')
local p = {}
local function getWikidataCategory(userval, wdval, from)
local cat
-- rimuove eventuali wikilink per il confronto
userval = userval and mDelink._main({ userval })
wdval = wdval and mDelink._main({ wdval })
-- eventuale prefisso nazionale da ignorare nel confronto
local prefnaz = mWikidata._getProperty({ 'P17', showprop = 'P474', from = from })
if userval then
if not wdval then
cat = 'Prefisso telefonico locale assente su Wikidata'
elseif wdval == userval or (prefnaz and userval == string.format('(%s) %s', prefnaz, wdval)) then
cat = 'Prefisso telefonico locale uguale a Wikidata'
else
cat = 'Prefisso telefonico locale differente da Wikidata'
end
elseif wdval then
cat = 'Prefisso telefonico locale letto da Wikidata'
end
return string.format('[[Categoria:%s]]', cat)
end
-- Per l'utilizzo da altro modulo
function p._main(args)
local userval, wdval, cat
-- valore utente e wikidata
userval = args[1]
wdval = mWikidata._getProperty({ 'P473', from = args.from })
-- se esiste una voce in itwiki per il valore Wikidata letto, crea il wikilink
if wdval then
local iso3166 = mWikidata._getProperty({ 'P17', showprop = 'P298', from = args.from })
local prefissi = cfg.prefissi[iso3166]
if prefissi and prefissi[wdval] then
wdval = prefissi[wdval] == true and
string.format('[[%s]]', wdval) or
string.format('[[%s|%s]]', prefissi[wdval], wdval)
end
end
-- categorie di servizio
if mw.title.getCurrentTitle().namespace == 0 then
if not userval and not wdval and args.cat then
cat = string.format('[[Categoria:%s]]', args.cat)
elseif userval or wdval then
cat = getWikidataCategory(userval, wdval, args.from)
end
end
return (userval or wdval or '') .. (cat or '')
end
-- Entry-point per il template {{Prefisso telefonico}}
function p.main(frame)
return p._main(getArgs(frame, { parentOnly = true }))
end
return p