Module:其它版本
外观
模块文档[创建]
您可能想要创建本Scribunto模块的文档。 编者可以在本模块的沙盒 (创建 | 镜像)和测试样例 (创建)页面进行实验。 请在/doc子页面中添加分类。 本模块的子页面。 |
local p = {};
-- 輸出至目標數據項的鏈接
local function outputlink(entityid)
if entityid ~= mw.wikibase.getEntityIdForCurrentPage() then
local sitelink = mw.wikibase.getSitelink(entityid)
-- 僅輸出維基中存在的條目
if sitelink ~= nil then
return '*[[' .. sitelink .. ']]\n'
else
return ''
end
else
return ''
end
end
-- 輸出至目標數據項各版本的鏈接
local function outputversion(entityid)
-- 先輸出主條目
local text = outputlink(entityid)
-- 使用版本P747屬性輸出其它版本
local versions = mw.wikibase.getBestStatements(entityid, 'P747')
for k, v in pairs(versions) do
if v['mainsnak']['snaktype'] == 'value' then
text = text .. outputlink(v['mainsnak']['datavalue']['value']['id'])
end
end
return text
end
function p.main(frame)
local text = ''
local entityid = frame.args['wikidata']
if mw.wikibase == nil then
return ''
end
if entityid == nil then
entityid = frame.args['Wikidata']
end
if entityid == nil then
entityid = mw.wikibase.getEntityIdForCurrentPage()
end
if entityid ~= nil then
-- 先輸出主條目
text = outputversion(entityid)
-- 輸出各版本條目
local editionof = mw.wikibase.getBestStatements(entityid, 'P629')
for k, v in pairs(editionof) do
if v['mainsnak']['snaktype'] == 'value' then
text = text .. outputversion(v['mainsnak']['datavalue']['value']['id'])
end
end
end
-- 去掉末行空行
if text ~= '' then
return string.sub(text, 0, string.len(text) - 1)
else
return text
end
end
return p;