Modulo:Controllo Wikidata

Da Esopedia, l'Enciclopedia dell'[[Ordine Martinista Antico e Tradizionale|O.M.A.T.]] per gli Iniziati.
Jump to navigation Jump to search

--[[

  • Modulo che implementa il template Controllo Wikidata.

]]--

require('Modulo:No globals')

local getArgs = require('Modulo:Arguments').getArgs local mWikidata = require('Modulo:Wikidata') local p = {}

-- Confronta due URL senza tenere conto di un eventuale slash finale (solo se uno) e del protocollo http/https local function compareURL(url1, url2) local ret = false url1, url2 = url1:match('^https?://(.*)$'), url2:match('^https?://(.*)$') if url1 and url2 then local n, n2 = select(2, url1:gsub('/', )), select(2, url2:gsub('/', )) if n <= 1 and n2 <= 1 then ret = url1:gsub('/$', ) == url2:gsub('/$', ) else ret = url1 == url2 end end return ret end

local function getCategory(wdval, userval, catprefix, args) local genletto = { ms = 'letto', mp = 'letti', fs = 'letta', fp = 'lette' } local comparefunc = function(v1, v2) return v1 == v2 end local cat

-- consente di definire funzioni di confronto per proprietà specifiche -- (oppure tramite eventuali parametri) if args.id ~= 'no' and args[1] == 'P856' then comparefunc = compareURL end

if userval then if not wdval then cat = string.format('%s assente su Wikidata', catprefix) elseif comparefunc(wdval, userval) then cat = args.uguale == 'sì' and string.format('%s uguale a Wikidata', catprefix) or nil elseif args.diff ~= 'no' then cat = string.format('%s differente da Wikidata', catprefix) end elseif wdval then cat = string.format('%s %s da Wikidata', catprefix, args.genere and genletto[args.genere] or 'letto') end

return cat and string.format(, cat) end

-- Per l'utilizzo da altro modulo function p._main(args) local wdprop, userval, catprefix = args[1], args[2], args[3] local wdval

-- namespace 0, proprietà Wikidata e prefisso categoria obbligatori if mw.title.getCurrentTitle().namespace ~= 0 or (args.id ~= 'no' and not wdprop) or not catprefix then return nil end

-- con id=no il primo parametro non è più trattato come l'ID di una proprietà Wikidata -- ma come una normale stringa da confrontare con il secondo parametro if args.id == 'no' then wdval = wdprop else wdval = mWikidata._getProperty({ wdprop, showunit = args['unità'] ~= 'no', formatnum = args['unità'] ~= 'no' }) end

return getCategory(wdval, userval, catprefix, args) end

-- Entry-point per il template Errore Lua in Modulo:Wikidata alla linea 763: attempt to call local 'p' (a table value). function p.main(frame) return p._main(getArgs(frame, {parentOnly = true})) end

return p