League of Legends Wiki

Want to contribute to this wiki?
Sign up for an account, and get started!
You can even turn off ads in your preferences.

Come join the LoL Wiki community Discord server!

READ MORE

League of Legends Wiki
Register
Advertisement

Functions

{{#invoke: Filename | ability
| ability     OR 1 = 
| variant     OR 2 =  -- can be empty
}}

{{#invoke: Filename | buff
| buff        OR 1 = 
| variant     OR 2 =  -- can be empty
}}

{{#invoke: Filename | champion
| champion    OR 1 = 
| variant     OR 2 =  -- can be empty
}}

{{#invoke: Filename | championcircle
| champion    OR 1 = 
| skin        OR 2 =  -- can be empty
| variant     OR 3 =  -- can be empty
}}

{{#invoke: Filename | chroma
| champion    OR 1 = 
| skin        OR 2 =  -- can be empty
| chroma      OR 3 = 
}}

{{#invoke: Filename | item
| item        OR 1 = 
| enchantment OR 2 =  -- can be empty
| variant     OR 3 =  -- can be empty
}}

{{#invoke: Filename | loading
| champion    OR 1 = 
| skin        OR 2 = 
| variant     OR 3 =  -- can be empty
}}

{{#invoke: Filename | mastery
| mastery     OR 1 = 
| season      OR 2 = 
}}

{{#invoke: Filename | monster
| monster     OR 1 = 
| variant     OR 2 =  -- can be empty
}}

{{#invoke: Filename | profileicon
| profileicon OR 1 = 
| variant     OR 2 =  -- can be empty
}}

{{#invoke: Filename | rune
| rune        OR 1 = 
| variant     OR 2 =  -- can be empty
}}

{{#invoke: Filename | runeold
| stat        OR 1 = 
| rune        OR 2 = 
| tier        OR 3 = 
}}

{{#invoke: Filename | skin
| champion    OR 1 = 
| skin        OR 2 = 
| variant     OR 3 =  -- can be empty
}}

{{#invoke: Filename | spell
| spell       OR 1 = 
| variant     OR 2 =  -- can be empty
}}

{{#invoke: Filename | ward
| ward        OR 1 = 
}}

-- <pre>
local Filename = {}
local lib = require('Module:Feature')
 
function Filename.ability(frame)
    local args = lib.frameArguments(frame)
    if (args['ability'] or args[2]) == "Basic Attack" then return "Basic Attack.png"
    else
	    return handleArgs(args, mw.text.trim(encode(
	        formatnil('%s %s %s.%s', args['champion'] or args[1], args['ability'] or args[2], args['variant'] or args[3], args['extension'] or 'png')
	    or
	        formatnil('%s %s.%s', args['champion'] or args[1], args['ability'] or args[2], args['extension'] or 'png')
	    or
	        'Placeholder.svg')))
	end
end

function Filename.WRability(frame)
    local args = lib.frameArguments(frame)
    if (args['ability'] or args[2]) == "Basic Attack" then return "Basic Attack.png"
    else
	    return handleArgs(args, mw.text.trim(encode(
	        formatnil('%s %s %s WR.%s', args['champion'] or args[1], args['ability'] or args[2], args['variant'] or args[3], args['extension'] or 'png')
	    or
	        formatnil('%s %s WR.%s', args['champion'] or args[1], args['ability'] or args[2], args['extension'] or 'png')
	    or
	        'Placeholder.svg')))
	end
end

function Filename.buff(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s buff %s.png', args['buff'] or args[1], args['variant'] or args[2])
    or
        formatnil('%s buff.png', args['buff'] or args[1])
    or
        'Placeholder.svg')))
end
--placeholder for WR
function Filename.WRbuff(frame)
	return Filename.buff(frame)
end

function Filename.championcircle(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s %sCircle %s.png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''), args['variant'] or args[3])
    or
        formatnil('%s %sCircle.png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''))
    or
        'ChampionSquare.png')))
end

function Filename.WRchampioncircle(frame)
	--return Filename.championcircle(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s %sCircle WR %s.png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''), args['variant'] or args[3])
    or
        formatnil('%s %sCircle WR.png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''))
    or
        'ChampionSquare.png')))
end

function Filename.championsquare(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s %sSquare %s.png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''), args['variant'] or args[3])
    or
        formatnil('%s %sSquare.png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''))
    or
        'ChampionSquare.png')))
end

function Filename.WRchampionsquare(frame)
	--return Filename.championsquare(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s %sSquare WR %s.png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''), args['variant'] or args[3])
    or
        formatnil('%s %sSquare WR.png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''))
    or
        'ChampionSquare.png')))
end

function Filename.TFTchampionsquare(frame)
	--return Filename.championsquare(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s %sTFTSquare %s.png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''), args['variant'] or args[3])
    or
        formatnil('%s %sTFTSquare.png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''))
    or
        'ChampionSquare.png')))
end

function Filename.chroma(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s %s (%s) %s.png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''), args['chroma'] or args[3], args['variant'] or args[4])
    or
        formatnil('%s %s (%s).png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''), args['chroma'] or args[3])
    or
        'Placeholder.svg')))
end

--placeholder for WR
function Filename.WRchroma(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s %s (%s) %s WR.png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''), args['chroma'] or args[3], args['variant'] or args[4])
    or
        formatnil('%s %s (%s) WR.png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''), args['chroma'] or args[3])
    or
        'Placeholder.svg')))
end

function Filename.item(frame)
    local args = lib.frameArguments(frame)
    if (args['enchantment']) then
        result = handleArgs(args, mw.text.trim(encode(
            formatnil('%s (%s) item %s.png', args['item'] or args[1], args['enchantment'] or args[2], args['variant'] or args[3])
        or
            formatnil('%s (%s) item.png', args['item'] or args[1], args['enchantment'] or args[2])
        or
            'Placeholder.svg')))
    else
        result = handleArgs(args, mw.text.trim(encode(
            formatnil('%s item %s.png', args['item'] or args[1], args['variant'] or args[2])
        or
            formatnil('%s item.png', args['item'] or args[1])
        or
            'Placeholder.svg')))
    end
    return result
end

function Filename.writem(frame)
	return Filename.WRitem(frame)
end

function Filename.WRitem(frame)
    local args = lib.frameArguments(frame)
    if (args['enchantment']) then
        result = handleArgs(args, mw.text.trim(encode(
            formatnil('%s (%s) WR item %s.png', args['item'] or args[1], args['enchantment'] or args[2], args['variant'] or args[3])
        or
            formatnil('%s (%s) WR item.png', args['item'] or args[1], args['enchantment'] or args[2])
        or
            'Placeholder.svg')))
    else
        result = handleArgs(args, mw.text.trim(encode(
            formatnil('%s WR item %s.png', args['item'] or args[1], args['variant'] or args[2])
        or
            formatnil('%s WR item.png', args['item'] or args[1])
        or
            'Placeholder.svg')))
    end
    return result
end

function Filename.TFTitem(frame)
    local args = lib.frameArguments(frame)
    result = handleArgs(args, mw.text.trim(encode(
        formatnil('%s TFT item %s.png', args['item'] or args[1], args['variant'] or args[2])
    or
        formatnil('%s TFT item.png', args['item'] or args[1])
    or
        'Placeholder.svg')))
    return result
end

function Filename.loading(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s %sLoading %s.jpg', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''), args['variant'] or args[3])
    or
        formatnil('%s %sLoading.jpg', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''))
    or
        'Champion SkinLoading.jpg')))
end

function Filename.WRloading(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s %sLoading WR %s.png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''), args['variant'] or args[3])
    or
        formatnil('%s %sLoading WR.png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''))
    or
        'Champion SkinLoading.jpg')))
end

function Filename.render(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s %s Render %s.png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''), args['variant'] or args[3])
    or
        formatnil('%s %s Render.png', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''))
    or
        'Champion Render.png')))
end

function Filename.mastery(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s mastery %d.png', args['mastery'] or args[1], tonumber(args['season'] or args[2]))
    or 
        'Placeholder.svg')))
end

function Filename.monster(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%sSquare %s.png', args['monster'] or args[1], args['variant'] or args[2])
    or
        formatnil('%sSquare.png', args['monster'] or args[1])
    or
        'Placeholder.svg')))
end

function Filename.profileicon(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s profileicon %s.png', args['profileicon'] or args[1], args['variant'] or args[2])
    or
        formatnil('%s profileicon.png', args['profileicon'] or args[1])
    or
        'Placeholder.svg')))
end

function Filename.profileiconV1(frame)
	local args = lib.frameArguments(frame)
	local id = args['profileicon'] or args[1]
	local index = mw.loadJsonData('Module:Profile-Icons/V1/index.json');
	local mime2ext = mw.loadJsonData('Module:Filename/mime2ext.json');
	local mime = index[id];
	if (mime == nil) then return nil end
	local ext = mime2ext[mime[1]]
	if (ext == nil) then return nil end
	return "Profile-Icons-V1-"..id.."."..ext;
end

function Filename.rune(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s rune %s.png', args['rune'] or args[1], args['variant'] or args[2])
    or
        formatnil('%s rune.png', args['rune'] or args[1])
    or
        'Placeholder.svg')))
end

function Filename.WRrune(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s (Wild Rift) rune %s.png', args['rune'] or args[1], args['variant'] or args[2])
    or
        formatnil('%s (Wild Rift) rune.png', args['rune'] or args[1])
    or
        'Placeholder.svg')))
end

function Filename.runeold(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s %s %d.png', args['stat'] or args[1], args['rune'] or args[2], tonumber(args['tier'] or args[3]))
    or
        'Placeholder.svg')))
end

function Filename.skin(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s %sSkin %s.jpg', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''), args['variant'] or args[3])
    or
        formatnil('%s %sSkin.jpg', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''))
    or
        'Champion SkinSkin.jpg')))
end

function Filename.WRskin(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s %sSkin WR %s.jpg', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''), args['variant'] or args[3])
    or
        formatnil('%s %sSkin WR.jpg', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''))
    or
        'Champion SkinSkin.jpg')))
end

function Filename.wrskin(frame)
	return Filename.WRskin(frame)
end

function Filename.LORskin(frame)
    local args = lib.frameArguments(frame)
    if (args['skin'] == 'Original' or args[2] == 'Original') then -- original card name doesn't use suffix
    	return handleArgs(args, mw.text.trim(encode(
	    	formatnil('%s-full.png', args['cardcode'] or args[1])
		or
			'Champion SkinSkin.jpg')))
    else
    	return handleArgs(args, mw.text.trim(encode(
			formatnil('%s %s-full.png', args['cardcode'] or args[1], string.gsub(args['skin'] or args[2], ' ', ''))
		or
			'Champion SkinSkin.jpg')))
    end
end

function Filename.lorskin(frame)
	return Filename.LORskin(frame)
end

function Filename.LORcircle(frame)
    local args = lib.frameArguments(frame)
    if (args['skin'] == 'Original' or args[2] == 'Original') then -- original card name doesn't use suffix
    	return handleArgs(args, mw.text.trim(encode(
	    	formatnil('%s-circle.png', args['cardcode'] or args[1])
		or
			'ChampionSquare.png')))
    else
    	return handleArgs(args, mw.text.trim(encode(
			formatnil('%s %s-circle.png', args['cardcode'] or args[1], string.gsub(args['skin'] or args[2], ' ', ''))
		or
			'ChampionSquare.png')))
    end
end

function Filename.lorcircle(frame)
	return Filename.LORcircle(frame)
end

function Filename.skintile(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s %sTile %s.jpg', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''), args['variant'] or args[3])
    or
        formatnil('%s %sTile.jpg', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''))
    or
        'Champion SkinSkin.jpg')))
end

function Filename.skincentered(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s %sCentered %s.jpg', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''), args['variant'] or args[3])
    or
        formatnil('%s %sCentered.jpg', args['champion'] or args[1], string.gsub(args['skin'] or args[2] or 'Original', ' ', ''))
    or
        'Champion SkinSkin.jpg')))
end

function Filename.spell(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(
        formatnil('%s %s.png', args['spell'] or args[1], args['variant'] or args[2])
    or
        formatnil('%s.png', args['spell'] or args[1])
    or
        'Placeholder.svg')))
end

function Filename.ward(frame)
    local args = lib.frameArguments(frame)
    return handleArgs(args, mw.text.trim(encode(formatnil('%s Ward.png', args['ward'] or args[1]) or 'Placeholder.svg')))
end

-- Helper functions
function Filename.encode(frame)
    return mw.text.trim(encode(frame.args[1]))
end

function encode(text)
    if text == nil then return nil end
    text = mw.ustring.gsub(text, ':', '-')
    text = mw.ustring.gsub(text, '/', '')
    return text
end

function handleArgs(args, filename)
    local result = filename
    if args['prefix'] then filename = args['prefix'] .. filename end
    if args['suffix'] then filename = filename .. args['suffix'] end
    if args['parse'] then filename = mw.getCurrentFrame():preprocess(filename) end
    return result
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
 
return Filename
-- </pre>
-- [[Category:Lua]]
Advertisement