Modulo:Wikidata: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
aggiunto parametro from, uniforme con #property, per l'utilizzo dell'accesso arbitrario |
aggiunto formatting=raw per type wikibase-entityid e funzione indexOf |
||
Riga 1:
--[[
* Modulo per implementare le funzionalità dei template:
* {{Wikidata}}, {{WikidataQ}}, {{WikidataIdx}} e {{WikidataN}}. * Permette di accedere a Wikidata in modo più avanzato rispetto a {{#property}}.
Riga 16 ⟶ 17:
["property-param-not-provided"] = "Parametro ''property'' non fornito.",
["qualifier-param-not-provided"] = "Parametro ''qualifier'' non fornito.",
["value-param-not-provided"] = "Parametro ''valore'' da ricercare non fornito.",
["entity-not-found"] = "Entità non trovata.",
["unknown-claim-type"] = "Tipo asserzione sconosciuta.",
Riga 34 ⟶ 36:
end
local function formatEntityId(entityId, options
if formatting == 'raw' then▼
end▼
local label = mw.wikibase.label(entityId)
local link = mw.wikibase.sitelink(entityId)
Riga 101 ⟶ 99:
end
local function formatDatavalue(datavalue, options
local ret
--Default formatters
if datavalue.type == 'wikibase-entityid' then
ret = formatEntityId(getEntityIdFromValue(datavalue.value), options, formatting)▼
ret = getEntityIdFromValue(datavalue.value)
else
end
elseif datavalue.type == 'string' then
ret = datavalue.value
Riga 124 ⟶ 126:
end
local function formatSnak(snak, options
if snak.snaktype == 'somevalue' then
return i18n['somevalue']
Riga 130 ⟶ 132:
return i18n['novalue']
elseif snak.snaktype == 'value' then
return formatDatavalue(snak.datavalue, options
else
return formatError('unknown-snak-type')
Riga 179 ⟶ 181:
-- Ritorna true se lo statement contiene il qualifier richiesto con un dato valore
local function hasQualifierValue(statement, options)
local formatting = options.formatting
local ret = false
options.formatting = 'raw'
for i, qualifier in pairs(statement.qualifiers[options.qualifier]) do
if formatSnak(qualifier, options
ret = true
break
end
end
options.formatting = formatting
return ret
end
Riga 327 ⟶ 332:
end
if not args.qualifier then
return formatError('qualifier-param-not-provided')
Riga 353 ⟶ 357:
return mw.text.listToText(formattedQualifiers, args.separator, args.conjunction)
end
function p._indexOf(args)
local ret, claims
-- parametri posizionali
args.property = args[1] and string.upper(args[1]) or nil
args.value = args[2]
if not args.value then
return formatError('value-param-not-provided')
▲ end
-- get claims
ret, claims = pcall(getClaims, args)
if not ret then
return claims:match('.+%d:%s(.+)$')
end
ret = nil
args.formatting = 'raw'
for i, claim in pairs(claims) do
if formatStatement(claim, args) == args.value then
ret = i
end
end
return ret or -1
end
Riga 373 ⟶ 405:
end
-- Entry-point per {{
function p.getProperty(frame)
return p._getProperty(getArgs(frame, {parentOnly = true}))
end
-- Entry-point per {{
function p.getQualifier(frame)
return p._getQualifier(getArgs(frame, {parentOnly = true}))
end
-- Entry-point per {{
function p.indexOf(frame)
return p._indexOf(getArgs(frame, {parentOnly = true}))
end
-- Entry-point per {{WikidataN}}
function p.N(frame)
return p._N(getArgs(frame, {parentOnly = true}))
|