Modulu:Wikidata: berrikuspenen arteko aldeak
Ezabatutako edukia Gehitutako edukia
update from ca.wiki: alternative values of property, new format musical-notation |
formatting sound for musical-notation, access to all functions via require, fixes for raw novalue/somevalue |
||
1. lerroa:
-- version
local p = {}
9. lerroa:
["property-not-found"] = "Property not found.",
["qualifier-not-found"] = "Qualifier not found.",
},
["datetime"] =
34 ⟶ 33 lerroa:
},
["monolingualtext"] = '<span lang="%language">%text</span>',
["cite"] = { -- Cite web parameters
["url"] = "url",
59 ⟶ 58 lerroa:
{
langcode = mw.language.getContentLanguage().code,
module_title =
}
88 ⟶ 87 lerroa:
loadI18n()
-- Argument is 'set' when it exists (not nil) or when it is not an empty string.
local function isSet(var)
return not (var == nil or var == '')
local function case(localcase, label, ...)
if
return label
end
98 ⟶ 102 lerroa:
local function findLang(langcode)
if
local
local pframe = cframe:getParent()
langcode = myframe.args.lang▼
if mw.language.isKnownLanguageTag(langcode or '') == false then langcode =
if langcode == nil or langcode == "" or mw.language.isKnownLanguageTag(langcode) == false then▼
▲ if not mw.title.getCurrentTitle().isContentPage then
▲ if
▲ end
end▼
end
end
120 ⟶ 122 lerroa:
-- Helper function to obtain the default language code
function p.lang(frame)
return findLang(lang)[1]
end
265 ⟶ 268 lerroa:
end
local function printDatatypeMusicalNot(data, formatting)
local attr = {}
return mw.getCurrentFrame():callParserFunction('#tag:score', data)▼
if formatting == 'sound' then
attr.sound = 1
end▼
end
273 ⟶ 280 lerroa:
return '[' .. data .. ' ' .. mw.text.split(data, '//' )[2] .. ']'
elseif mw.ustring.find((parameters.formatting or ''), '$1', 1, true) then -- formatting = a pattern
return expandBraces(mw.ustring.gsub(parameters.formatting, '$1', {['$1']=data}), parameters.formatting)
elseif parameters.case then
return case(parameters.case, data, parameters.lang[1])
281 ⟶ 288 lerroa:
end
local function
return printDatavalueString(urlEscapes(data), parameters)
end
local function printDatavalueCoordinate(data, parameter)
local globes = {['Q3134']='callisto',['Q596']='ceres',['Q15040']='dione',['Q2']='earth',['Q3303']='enceladus',
294 ⟶ 301 lerroa:
if mw.ustring.find(parameter, '$globe', 1, true) then
local myglobe = 'earth'
if isSet(data.globe
local globenum = mw.text.split(data.globe, 'entity/')[2] -- http://www.wikidata.org/wiki/Q2
myglobe = globes[globenum] or 'earth'
523 ⟶ 530 lerroa:
else
if parameter == "ucfirst" or parameter == "ucinternallink" then
if labelcase
labelcase -- only first of a list, reset formatting for next ones
if parameter == "ucinterlanllink" then
608 ⟶ 617 lerroa:
return printDatatypeMath(snak.datavalue.value)
elseif snak.datatype == 'musical-notation' then
return printDatatypeMusicalNot(snak.datavalue.value, parameters.formatting)
elseif snak.datatype == "url" then
return
elseif snak.datavalue.type == "string" then
return printDatavalueString(snak.datavalue.value, parameters)
625 ⟶ 634 lerroa:
end
elseif snak.snaktype == 'novalue' then
if parameters.formatting == 'raw' then return end
return mw.message.new('Wikibase-snakview-snaktypeselector-novalue'):inLanguage(parameters.lang[1]):plain()
elseif snak.snaktype == 'somevalue' then
if parameters.formatting == 'raw' then return end
return mw.message.new('Wikibase-snakview-snaktypeselector-somevalue'):inLanguage(parameters.lang[1]):plain()
end
776 ⟶ 787 lerroa:
require(wiki.module_title .. '/debug').track('getSiteLink')
local id = frame.args[1]
if
id = mw.wikibase.getEntityIdForCurrentPage()
if id == nil then
790 ⟶ 801 lerroa:
local list = {}
for i = 0, num_qual do
if isSet(args[type_list .. i]
listed = true
list[tostring(i)] = {}
813 ⟶ 824 lerroa:
end
function p.
-- function renamed, track it
require(wiki.module_title .. '/debug').track('main')
return p.claim(args)
▲ end
return p._main(frame.args, frame:getParent().args)▼
end
local args = frame.args or frame -- via invoke or require
▲-- On debug console use: =p._main({item="Q...", lang="xx", property="P...", ...})
▲function p._main(args, pargs)
--If a value is already set, use it
if isSet(args.value
return args.value
end
-- arguments
local id = args.item or (pargs and pargs.item)
if
id = mw.wikibase.getEntityIdForCurrentPage()
if id == nil then return end
end
local property = string.upper(args["property"] or "")
978 ⟶ 986 lerroa:
for idx in pairs(claims) do
local claim = claims[sortindices[idx]]
local reference = {}
if not whitelisted then rowlist[idx] = true end
if firstrank ~= '' and firstrank ~= claim.rank then
1.039 ⟶ 1.047 lerroa:
if not value and showerrors then value = error end
if value then
if references and claim.references then reference = claim.references end
refs[#refs]["col0"] = reference
values[#values]["col0"] = value
sortkeys[#sortkeys]["col0"] = sortkey or value
1.072 ⟶ 1.080 lerroa:
local valuerow = values[sortindices[idx]]
local reference = getReferences({["references"] = refs[sortindices[idx]]["col0"]})
value = valuerow["col0"]
if parameters.formatting == "table" then
1.302 ⟶ 1.310 lerroa:
-- Returns pairs of instance label and property value fetching a recursive tree
function p.getParentValues(frame)
local args = frame.args or frame -- via invoke or require
local
if not isSet(id) then
id = mw.wikibase.getEntityIdForCurrentPage()
if id == nil then return end
end
local languages = findLang(args.lang)
local propertySup = args["property"]; if not isSet(propertySup
local propertyLabel = args["label"]; if not isSet(propertyLabel
local propertyLink = args["valuetext"]; if propertyLink == "" then propertyLink = nil end --internallink
local upto = args["upto"]; if upto == "" then upto = nil end
1.319 ⟶ 1.328 lerroa:
local case = args["case"]; if case == "" then case = nil end
if isSet(args.uptolabelid
upto = mw.wikibase.getLabel(args.uptolabelid)
end
if isSet(args.showlabelid
local showLabelList = {} for substring in mw.text.gsplit(args.showlabelid, '[/%s]+') do table.insert(showLabelList, mw.wikibase.getLabel(substring)) end
if #showLabelList > 0 then
1.344 ⟶ 1.353 lerroa:
include_self)
local rowformat = args["rowformat"]; if not isSet(rowformat
local separator = args["separator"]; if not isSet(separator
local sorting = args["sorting"]; if sorting == "" then sorting = nil end
local cascade = (args.cascade == "true" or args.cascade == "yes")
1.357 ⟶ 1.366 lerroa:
function p.linkWithParentLabel(frame)
local args =
▲ end
-- get internal link of property/qualifier
1.366 ⟶ 1.372 lerroa:
args.formatting = "internallink"
args.separator = "/·/"
local
if not isSet(link_list) then
return
end
1.375 ⟶ 1.380 lerroa:
-- get id value of property/qualifier
args.formatting = "raw"
local items_list = p.
local items_table = mw.text.split(items_list, "/·/", true)
1.391 ⟶ 1.396 lerroa:
for i, v in ipairs(items_table) do
args.item = v
local link_label = p.
if isSet(link_label
link_table[i] = mw.ustring.gsub(link_table[i] or '', "%[%[(.*)%|.+%]%]", "[[%1|" .. link_label .. "]]")
end
1.406 ⟶ 1.411 lerroa:
function p.yearsOld(frame)
local args = frame.args or frame -- via invoke or require
local id = args.item
if
id = mw.wikibase.getEntityIdForCurrentPage()
end
1.486 ⟶ 1.491 lerroa:
local args = frame.args or frame -- via invoke or require
local id = mw.text.trim(args[1] or "")
if not isSet(id
local editicon = not (args.editicon == "false" or args.editicon == "no")
1.515 ⟶ 1.520 lerroa:
local linked = args.linked
if isSet(linked
local article = mw.wikibase.getSitelink(id) or ("d:" .. id)
return "[[" .. article .. "|" .. (label or id) .. "]]" .. pencil
|