local ImageLink = {}
local FN = require("Module:Filename")
local lib = require('Module:Feature')
function ImageLink.hero(frame)
local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
args['link'] = args['link'] or args['hero'] or ''
args['text'] = args['text'] or args['hero'] or ''
args['image'] = args['image'] or FN.herosquare(args)
args['editlink'] = args['editlink'] or "Модуль:HeroData/data"
args['selflink'] = args['selflink'] or mw.title.getCurrentTitle().rootText
local link, img = ImageLink._createLink(args)
link:addClass('tooltip-link')
if args['hero'] then link:attr('data-tooltip', "hero") end
if args['width'] and img ~= nil then img:addClass('icon-' .. args['width']) end
return link
end
function ImageLink._createLink(args)
args['display'] = (({['inlineblock'] = 'inline-block'})[args['display']]) or args['display'] or 'inline'
local tag = lib.ternary(args['display'] == 'inline', 'span', 'div')
local link = mw.html.create(tag):css('display', args['display']):addClass(args['display'] .. '-image')
if args['class'] then link:addClass(args['class']) end
if args['style'] then link:cssText(args['style']) end
args['alttext'] = args['alttext'] or ''
-- //img start
local img = mw.html.create(tag)
if args['image'] ~= '' then
img:css({position = 'relative', display = 'inline-block'})
local size = tostring(args['width'] or '') .. 'x' .. tostring(args['height'] or '') .. 'px'
if args['iconclass'] then img:addClass(args['iconclass']) end
if args['width'] then img:attr('data-width', tostring(args['width'])) end
if args['height'] then img:attr('data-height', tostring(args['height'])) end
if args['border'] == true then img:addClass('hero-icon-border') end
if args['iconstyle'] then img:cssText(args['iconstyle']) end
-- [[File:test.jpg|24px|border|link=test|testing]]
img:wikitext(mw.ustring.format('[[File:%s%s%s|link=%s%s]]',
args['image'],
lib.ternary(size == 'px', '', '|'..size),
lib.ternary(args['border'], '|border', ''),
lib.ternary(args['link'] == args['selflink'], '', args['link']),
lib.ternary(args['alttext'] == '',
lib.ternary(args['text'] == '', '', '|' .. args['text']),
'|' .. args['alttext']
)
))
end
return link, img
end
function formatnil(text, ...)
if select("#", ...) == 0 then return text end
for i=1, select("#", ...) do
if select(i, ...) == nil then return nil end
end
return mw.ustring.format(text, ...)
end
function getSize(size)
local fields = HF.explode('x', mw.ustring.gsub(tostring(size or ''), 'px', '', 1))
local width = tonumber(fields[1]) or nil
local height = tonumber(fields[2]) or nil
return width, height
end
return ImageLink