跳转到内容

模組:Property

被永久保护的模块
维基百科,自由的百科全书

这是本页的一个历史版本,由Kanashimi留言 | 贡献2016年4月6日 (三) 09:11编辑。这可能和当前版本存在着巨大的差异。

-- [[Template:P]]

local p = {}

-- Get the property of given wikidata entity.
-- 取得wikidata中指定實體項目的指定屬性。
-- https://www.mediawiki.org/wiki/Extension:Wikibase_Client/Lua
function p.data(frame)
	if not mw.wikibase then
		return '未安裝 Extension:Wikibase ?'
	end

	entity = mw.wikibase.getEntity(frame.args[2])
	-- if not entity then return nil end
	if entity == nil then
		return '不存在此項目: ' .. frame.args[2]
	end


	if frame.args[1] == nil then
		return mw.wikibase.label(entity.id)
	end

	-- return entity:formatPropertyValues(frame.args[1])


	property = entity['claims'][frame.args[1]]
	if property == nil then
		if frame.args[2] == nil then
			prefix = '本頁'
		else
			prefix = '此項目 [[d:' .. frame.args[2] .. ']] '
		end
		return prefix .. '不存在此屬性: ' .. frame.args[1]
	end

	property = property[1]['mainsnak']['datavalue']
	-- ['datavalue']: e.g.,
	-- {"value":{'entity-type':'item','numeric-id':1647152},type:'wikibase-entityid'}
	-- {"value":{"amount":"+10","unit":"1","upperBound":"+10","lowerBound":"+10"},"type":"quantity"}
	-- {"value":{"time":"-0800-01-01T00:00:00Z","timezone":0,"before":0,"after":0,"precision":7,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"}
	property = property['value']

	if property['amount'] ~= nil then
		return property['amount'] - 0
	end

	if property['time'] ~= nil then
		return property['time']
	end

	if property['numeric-id'] ~= nil then
		return mw.wikibase.label('Q' .. property['numeric-id'])
	end

	return '無法處理此屬性: ' .. frame.args[1] .. ',請修改 Module:property。'
end

return p