Modulo:Wikidata: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
fix return in p.N |
aggiornati spazi parentesi per il più usato en:Wikipedia:Lua style guide |
||
Riga 28:
-------------------------------------------------------------------------------
local function formatError(
return '<span class="error">' .. i18n.errors[key] .. '</span>'
end
local function formatEntityId(
if formatting == 'raw' then
return entityId
end
local label = mw.wikibase.label(
local link = mw.wikibase.sitelink(
if link then
if label then
Riga 50:
end
local function formatTime(
local year, month, day
local ret = ''
year, month, day = value.time:match(
if value.precision == 9 then
ret = tonumber(
elseif value.precision == 10 then
ret = mw.getLanguage('it'):formatDate('F Y', tonumber(year) .. '-' .. month)
Riga 70:
end
local function formatGlobecoordinate(
local ret
if options.formatting == 'latitude' then
Riga 82:
end
local function formatFromPattern(
-- la parentesi () extra serve per non ritornare anche il gsub.count
return (
end
local function getEntityIdFromValue(
local prefix = ''
if value['entity-type'] == 'item' then
Riga 94:
prefix = 'P'
else
return formatError(
end
return prefix .. value['numeric-id']
end
local function formatDatavalue(
local ret
--Default formatters
if datavalue.type == 'wikibase-entityid' then
ret = formatEntityId(
elseif datavalue.type == 'string' then
ret = datavalue.value
elseif datavalue.type == 'time' then
ret = formatTime(
elseif datavalue.type == 'globecoordinate' then
ret = formatGlobecoordinate(
elseif datavalue.type == 'quantity' then
ret = tonumber(datavalue.value.amount)
else
ret = formatError(
end
Riga 120:
end
local function formatSnak(
if snak.snaktype == 'somevalue' then
return i18n['somevalue']
Riga 126:
return i18n['novalue']
elseif snak.snaktype == 'value' then
return formatDatavalue(
else
return formatError(
end
end
local function formatStatement(
if not statement.type or statement.type ~= 'statement' then
return formatError(
end
return formatSnak(
end
local function formatStatements(
--Format statement and concat them cleanly
local formattedStatements = {}
Riga 156:
end
for i, claim in pairs(
formattedStatement = formatStatement(
-- eventuale pattern
if options.pattern then
formattedStatement = formatFromPattern(
end
table.insert(
end
if list_end then table.insert(
return mw.text.listToText(
end
Riga 174:
-- Ritorna true se lo statement contiene il qualifier richiesto con un dato valore
local function hasQualifierValue(
local ret = false
for i, qualifier in pairs(
if formatSnak(
ret = true
break
Riga 186:
-- Ritorna i claim con il rank richiesto
local function filterRankValue(
local ret = {}
for i, claim in pairs(
if claim.rank == rank then
table.insert(
end
end
Riga 199:
-- Gli statement ritornati sono eventualmente filtrati in base ai parametri:
-- "rank", "qualifier", "qualifiertype" e "n"
local function getClaims(
local entity, claims, filteredClaims
Riga 205:
entity = mw.wikibase.getEntityObject()
if not entity then
error(
end
-- get property
if not options.property then
error(
end
Riga 223:
if options.rank then
if options.rank == 'best' then
filteredClaims = filterRankValue(
if #filteredClaims == 0 then
filteredClaims = filterRankValue(
end
else
filteredClaims = filterRankValue(
end
claims = filteredClaims
Riga 239:
if claim.qualifiers and claim.qualifiers[options.qualifier] then
if options.qualifiervalue then
if hasQualifierValue(
table.insert(
end
else
table.insert(
end
end
Riga 253:
if options.qualifier and options.qualifiertype == 'latest' then
local latest, latestTime
for i, claim in pairs(
if claim.qualifiers and claim.qualifiers[options.qualifier] then
for j, qualifier in pairs(
if qualifier.datavalue.type == 'time' then
if not latestTime or qualifier.datavalue.value.time > latestTime then
Riga 265:
end
end
claims = latest and {
end
-- con options.n ritorna solo l'n-esimo elemento
if options.n then
local n = tonumber(
claims = (n and n <= #claims) and {
end
Riga 284:
-- Entry-point per {{#invoke:Wikidata|formatStatements}}
function p.formatStatements(
local args, ret, claims
args = getArgs(
-- Per riabilitare eventualmente la chiamata al modulo diretta,
-- pur usando sempre solo getParent per il template, sostituire con:
-- args = getArgs(
-- parametri posizionali
args.property = args[1] and string.upper(
args.value = args[2]
-- fix uppercase
args.qualifier = args.qualifier and string.upper(
-- if parameter value is already set, use it
if args.value then
return args.pattern and formatFromPattern(
end
-- get claims
ret, claims = pcall(
if not ret then
return claims:match(
end
return formatStatements(
end
-- Entry-point per {{#invoke:Wikidata|getQualifier}}
function p.getQualifier(
local args, ret, claims, formattedQualifier, formattedQualifiers
args = getArgs(
-- args = getArgs(
-- parametri posizionali
args.property = args[1] and string.upper(
args.qualifier = args[2] and string.upper(
args.value = args[3]
-- if parameter value is already set, use it
if args.value then
return args.pattern and formatFromPattern(
end
-- get qualifier name
if not args.qualifier then
return formatError(
end
-- get claims
ret, claims = pcall(
if not ret then
return claims:match(
end
-- get qualifiers and format them
formattedQualifiers = {}
for i, claim in pairs(
if claim.qualifiers and claim.qualifiers[args.qualifier] then
for j, qualifier in pairs(
formattedQualifier = formatSnak(
if args.pattern then
formattedQualifier = formatFromPattern(
end
table.insert(
end
end
end
return mw.text.listToText(
end
-- Entry-point per {{#invoke:Wikidata|N}}
function p.N(
local args, entity, property, count
args = getArgs(
-- args = getArgs(
-- parametri posizionali
property = args[1] and string.upper(
if not property then
return formatError(
end
|