Modulo:Prefisso telefonico
--[[
* 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/Configurasion')
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 = 'P473 no ła ghe xe in Wikidata'
elseif wdval == userval or (prefnaz and userval == string.format('(%s) %s', prefnaz, wdval)) then
cat = 'P473 conpagna so Wikidata'
else
cat = 'P473 difarente so Wikidata'
end
elseif wdval then
cat = 'P473 lexesta 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