Модуль:Карточка
Материал из Playzone Minecraft Wiki
Версия от 20:28, 19 ноября 2016; Atributz (обсуждение)
Для документации этого модуля может быть создана страница Модуль:Карточка/doc
local p = {} function p.infobox( f ) local args = require( 'Модуль:ProcessArgs' ).merge( true ) local titleObject = mw.title.getCurrentTitle() local title = args['название'] or titleObject.subpageText ---Передача данных об используемом инструменте из шаблона Блок для модуля Таблица разрушаемости f:callParserFunction( '#dplvar:set', 'blocktool', args["инструмент"] ) local imageArea = args["изображения"] if not imageArea and imageArea ~= 'none' then local images = {} local invImages = {} local defaultImageSize = args["умолчразмеризобр"] or '150px' args["изображение1"] = args["изображение1"] or args["изображение"] or 'title' args["изобр1разм"] = args["изобр1разм"] or args["изобрразм"] args["инвизображение1"] = args["инвизображение1"] or args["инвизображение"] or 'title' local imgCount = {} local invImgCount = {} for k, v in pairs( args ) do if type( k ) == 'string' then local image, num = mw.ustring.match(k, '^(изображение)(%d+)$' ) local invImage, invNum = mw.ustring.match(k, '^(инвизображение)(%d+)$' ) if mw.ustring.lower(v) ~= 'нет' then if image then table.insert( imgCount, tonumber( num ) ) elseif invImage then table.insert( invImgCount, tonumber( invNum ) ) end end end end table.sort( imgCount ) local animate for k, v in ipairs( imgCount ) do local image = args['изображение' .. v] local size = args['изобр' .. v .. 'разм'] or defaultImageSize if image == 'title' then local filename if titleObject.isSubpage then filename = title .. ' (' .. titleObject.baseText .. ').png' else filename = title .. '.png' end local imageTitle = mw.title.new( 'Файл:' .. filename ) if imageTitle and imageTitle.exists then image = '[[Файл:' .. filename .. '|' .. size .. ']]' elseif titleObject.namespace == 0 then image = '[[Файл:No image.svg|' .. size .. '|link=Файл:' .. filename .. '|Загрузить ' .. filename .. ']]' else image = '[[Файл:No image.svg|' .. size .. '|link=]]' end elseif mw.ustring.match(image, ';' ) then if not animate then animate = require( 'Модуль:Анимация' ).animate end image = animate{ image, size } else image = '[[Файл:' .. image .. '|' .. size .. ']]' end table.insert( images, '<div>' .. image .. '</div>' ) end images = table.concat( images, '\n' ) if #invImgCount > 0 then table.sort( invImgCount ) local grid local invIds = mw.loadData( [[Модуль:ИнвСпрайт/ID]] )["IDы"] for k, v in ipairs( invImgCount ) do local image = args['инвизображение' .. v] if image == 'title' then local imageExists if invIds[title] then imageExists = true else local imageTitle = mw.title.new( 'Файл:Grid ' .. title .. '.png' ) imageExists = imageTitle and imageTitle.exists end if imageExists then image = title else image = false end end if image == '----' then table.insert( invImages, '</div><div style="padding-top:.5em">' ) elseif image then if not grid then grid = require( 'Модуль:Инвентарный слот' ).slot end table.insert( invImages, grid{ image, ['ссылка'] = 'нет' } ) end end if grid and #invImages > 0 then invImages = '<div class="infobox-invimages"><div>' .. table.concat( invImages, '' ) .. '</div></div>' else invImages = '' end else invImages = '' end if images ~= '' or invImages ~= '' then imageArea = images .. '\n' .. invImages else imageArea = 'нет' end end if imageArea and imageArea ~= 'нет' then imageArea = '<div class="infobox-imagearea">' .. imageArea .. '</div>' else imageArea = '' end local footer = args["подвал"] if footer then footer = '| class="infobox-footer" colspan="2" | ' .. footer end local bgcolor = args["цвет"] if bgcolor then bgcolor = ' style="background:#' .. bgcolor .. '"' end local html = { '<div class="notaninfobox">', '<div class="mcwiki-header infobox-title"', bgcolor or '', '>' .. title .. '</div>', imageArea, '{| class="infobox-rows" cellspacing="1" cellpadding="4"', '|-', args["ряды"] or '', footer or '', '|}', '</div>' } return table.concat( html, '\n' ) end return p