Модуль:External links/Documentation
Перейти к навигации
Перейти к поиску
local p = {}
local data = require( 'Module:External links/data' )
-- Для проверки других частей таблицы увеличивайте lineOffset (например, до 395)
-- и делайте предпросмотр страницы [[Шаблон:Внешние ссылки/doc]]
local lineOffset = 0
local lineCounter = 0
local maxItems = 395
local function renderLabel( params )
if type( params ) == 'string' then
return params
end
local qid = params[ 1 ]
local default = params[ 2 ]
return mw.wikibase.label( qid ) or default
end
local function renderLine( frame, params )
local result = ''
local resourceLabel = renderLabel( params[ 1 ] )
local pid = params[ 2 ]
local qid
if string.match( pid, '^P%d+:Q%d+$' ) then
local parts = mw.text.split( pid, ':', true )
pid = parts[ 1 ]
qid = parts[ 2 ]
end
result = result .. '| ' .. resourceLabel .. '\n'
result = result .. '| [[:d:Property:' .. pid .. '|' .. pid .. ']]'
if qid then
result = result .. ' = [[:d:' .. qid .. '|' .. qid .. ']]'
end
local formatter = params[ 3 ] or ''
if type ( formatter ) == 'function' then
formatter = 'function()'
elseif formatter == '' or mw.ustring.sub( formatter, 1, 1 ) == ':' or qid then
formatter = mw.text.nowiki( formatter )
else
lineCounter = lineCounter + 1
if lineCounter >= lineOffset and lineCounter < lineOffset + maxItems then
local formatterStatements = mw.wikibase.getAllStatements( pid, 'P1630' )
local extFormatterStatements = mw.wikibase.getAllStatements( pid, 'P3303' )
for _, statement in ipairs( extFormatterStatements ) do
table.insert( formatterStatements, statement )
end
local wdFormatters = {}
local isEqual = false
for _, statement in ipairs( formatterStatements ) do
if statement.rank ~= 'deprecated' then
local wdFormatter = statement.mainsnak.datavalue.value
if wdFormatter == formatter then
formatter = '[[Файл:Yes check.svg|15px|alt=Совпадает с Викиданными|link=]] ' .. mw.text.nowiki( formatter )
isEqual = true
break
else
table.insert( wdFormatters, mw.text.nowiki( wdFormatter ) )
end
end
end
if not isEqual then
formatter = '[[Файл:Red x.svg|16px|alt=Не совпадает с Викиданными|link=]] ' .. mw.text.nowiki( formatter )
if #wdFormatters then
formatter = formatter .. '\n* ' .. table.concat( wdFormatters, '\n* ' )
end
end
else
formatter = mw.text.nowiki( formatter )
end
end
result = result .. '\n| ' .. formatter
result = result .. '\n'
result = result .. '|-\n'
return result
end
function p.render( frame )
local result = ''
for _, groupData in pairs( data ) do
local groupLabel = groupData.label
local groupList = groupData.list
result = result .. '|-\n'
result = result .. '! scope="colgroup" colspan="3" | ' .. groupLabel .. '\n'
result = result .. '|-\n'
for _, linkParams in pairs( groupList ) do
result = result .. renderLine( frame, linkParams )
end
end
return result
end
return p