「モジュール:Wd」の版間の差分

en:Module:Wd 2017年9月10日 (日) 18:05(UTC)より
template>K-iczn
(en:Module:Wd 2017年9月9日 (土) 16:25(UTC)より)
template>K-iczn
(en:Module:Wd 2017年9月10日 (日) 18:05(UTC)より)
268行目: 268行目:


function buildWikilink(target, label)
function buildWikilink(target, label)
if target == label then
if not label or target == label then
return "[[" .. target .. "]]"
return "[[" .. target .. "]]"
else
else
622行目: 622行目:


-- if ID == nil then item connected to current page is used
-- if ID == nil then item connected to current page is used
function Config:getLabel(ID, raw, link, short, pageTitle)
function Config:getLabel(ID, raw, link, short)
raw = raw or false
raw = raw or false
link = link or false
link = link or false
short = short or false
short = short or false
pageTitle = pageTitle or false
local label = nil
local label = nil
633行目: 632行目:
local lang
local lang
if not raw or pageTitle then
if raw then
if not pageTitle then
-- (1) try short name
if short then
label = getShortName(ID)
if label == "" then
label = nil
end
end
-- (2) try label
if not label then
label, lang = mw.wikibase.getLabelWithLang(ID)
-- don't allow language fallback
if lang ~= self.langCode then
label = nil
end
end
end
-- (3) try sitelink/title
if not label or link then
if not ID then
title = mw.title.getCurrentTitle().prefixedText
elseif ID:sub(1,1) == "Q" then
title = mw.wikibase.sitelink(ID)
elseif label then
-- properties have no sitelink, 'title = ID' should only be set
-- if there is a 'label' already and if it needs to be linked;
-- otherwise, it would be 'label = title == ID' even if 'pageTitle' is set
title = ID
prefix = "d:Property:"
end
label = label or title
end
end
-- (4) try entity ID (i.e. raw value)
if not label and not pageTitle then
if not ID then
if not ID then
label = mw.wikibase.getEntityIdForCurrentPage()
label = mw.wikibase.getEntityIdForCurrentPage()
687行目: 645行目:
prefix = "d:" .. prefix
prefix = "d:" .. prefix
title = label
title = label -- may be nil
end
else
-- try short name first if requested
-- add optional link
if short then
if link and title then
label = getShortName(ID)
label = buildWikilink(prefix .. title, label) -- label is never nil if title is not nil
if label == "" then
label = nil
end
end
-- get label
if not label then
label, lang = mw.wikibase.getLabelWithLang(ID)
-- don't allow language fallback
if lang ~= self.langCode then
label = nil
end
end
end
end
if not label then
if not label then
label = ""
label = ""
elseif link then
-- build a link if requested
if not title then
if not ID then
title = mw.title.getCurrentTitle().prefixedText
elseif ID:sub(1,1) == "Q" then
title = mw.wikibase.sitelink(ID)
elseif ID:sub(1,1) == "P" then
-- properties have no sitelink, link to Wikidata instead
title = ID
prefix = "d:Property:"
end
end
if title then
label = buildWikilink(prefix .. title, label)
end
end
end
729行目: 718行目:
if self.propertyID then
if self.propertyID then
value = value .. "#" .. self.propertyID
value = value .. "#" .. self.propertyID
elseif self.pageTitle then
value = value .. "#sitelinks-wikipedia"
end
end
1,210行目: 1,201行目:
return value
return value
elseif snak.datavalue.type == 'wikibase-entityid' then
elseif snak.datavalue.type == 'wikibase-entityid' then
local label
local itemID = snak.datavalue.value['numeric-id']
local itemID = snak.datavalue.value['numeric-id']
1,220行目: 1,212行目:
end
end
return self:getLabel(itemID, raw, link, short)
label = self:getLabel(itemID, raw, link, short)
if label == "" then
label = nil
end
return label
else
else
return '<strong class="error">' .. unknownDataTypeError(snak.datavalue.type) .. '</strong>'
return '<strong class="error">' .. unknownDataTypeError(snak.datavalue.type) .. '</strong>'
2,326行目: 2,324行目:
local ID = nil
local ID = nil
local label = ""
local label = nil
local nextArg = args[1]
local nextArg = args[1]
2,381行目: 2,379行目:
end
end
label = _:getLabel(ID, _.curState.rawValue, _.curState.linked, _.curState.shortName, _.pageTitle)
if _.pageTitle then
-- "title" command was given
if not ID then
label = mw.title.getCurrentTitle().prefixedText
elseif ID:sub(1,1) == "Q" then
label = mw.wikibase.sitelink(ID)
end
if _.curState.linked and label then
label = buildWikilink(label)
end
label = label or ""
else
-- "label" command was given
label = _:getLabel(ID, _.curState.rawValue, _.curState.linked, _.curState.shortName)
end
if _.editable and label ~= "" then
if _.editable and label ~= "" then
匿名利用者