Модуль: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