Module:Eicons
Aller à la navigation
Aller à la recherche
Documentation La documentation ci-dessous est transcluse de Module:Eicons/doc. (éditer | historique)
Voir aussi la page anglaise du module : Module:Eicons. Elle pourra contenir des informations plus complètes et actuelles.
Ce module prend les valeurs générées dans le Modèle:Exclusive icons et crée les icônes. Voir le modèle pour une documentation.
local trim = mw.text.trim
local function parameter(parameter, base)
if parameter == 'y' or parameter == 'yes' then
return true
end
if parameter == 'n' or parameter == 'no' then
return false
end
return base
end
local function getVersionInfo(raw)
if not raw or raw == '' then
return false, false, false, false, false, false
else
return raw:find('d'),raw:find('c'),raw:find('o'),raw:find('m'),raw:find('3'),raw:find('j')
end
end
local function eicons(vd, vc, vo, vm, v3, vj, _small, _link)
local link = ''
local size
local result=''
if vd then
space = true
if _link then link = 'Desktop Version history' end
if _small then size = '12' else size = '16' end
result = result .. '[[File:Desktop only.png|'.. size ..'px|link='.. link ..'|Desktop Version]]'
end
if vc then
if space then result = result .. ' ' end
space = true
if _link then link = 'Console version' end
if _small then size = '13' else size = '17' end
result = result .. '[[File:Console only.png|'.. size ..'px|link='.. link ..'|Console Version]]'
end
if vj then
if space then result = result .. ' ' end
space = true
if _link then link = 'Old-gen console version#Japanese Release' end
if _small then size = '12' else size = '16' end
result = result .. '[[File:Flag jp.svg|'.. size ..'px|link='.. link ..'|Japanese Console version]]'
end
if vo then
if space then result = result .. ' ' end
space = true
if _link then link = 'Old-gen console version' end
if _small then size = 'x12' else size = 'x16' end
result = result .. '[[File:Old-Gen Console only.png|'.. size ..'px|link='.. link ..'|Old-gen console version]]'
end
if vm then
if space then result = result .. ' ' end
space = true
if _link then link = 'Mobile Version' end
if _small then size = 'x12' else size = 'x16' end
result = result .. '[[File:Mobile only.png|'.. size ..'px|link='.. link ..'|Mobile Version]]'
end
if v3 then
if space then result = result .. ' ' end
if _link then link = '3DS version' end
if _small then size = '24' else size = '32' end
result = result .. '[[File:3DS.svg|'.. size ..'px|link='.. link ..'|3DS version]]'
end
return result
end
local getArg = function(key, frame)
local value = frame.args[key]
if not value then
return nil
end
value = mw.text.trim(value)
if value == '' then
return nil
else
return value
end
end
-- main return object
return {
simple = function(frame)
local _versions = getArg(1, frame)
local _small = getArg('small', frame)
local _link = getArg('link', frame)
if not _versions or versions=='dcom3' or versions=='dcom3j' then
return ''
else
local vd,vc,vo,vm,v3,vj = getVersionInfo(_versions)
return mw.text.tag('span',{class='eico'}, eicons(vd, vc, vo, vm, v3, vj, _small, _link))
end
end,
go = function(frame)
local _versions = getArg(1, frame)
local _small = getArg('small', frame)
local _desktop = getArg('desktop', frame)
local _console = getArg('console', frame)
local _oldgen = getArg('old-gen', frame)
local _mobile = getArg('mobile', frame)
local _3ds = getArg('3ds', frame)
local _japan = getArg('japan', frame)
local _invert = getArg('invert', frame)
local _link = getArg('link', frame)
local vd,vc,vo,vm,v3,vj = getVersionInfo(_versions)
if _invert then
vd = not vd
vc = not vc
vo = not vo
vm = not vm
v3 = not v3
vj = false
end
if vd and vc and vo and vm and v3 then
vd = false
vc = false
vo = false
vm = false
v3 = false
vj = false
end
vd = parameter(_desktop, vd)
vc = parameter(_console, vc)
vo = parameter(_oldgen, vo)
vm = parameter(_mobile, vm)
v3 = parameter(_3ds, v3)
vj = parameter(_japan, vj)
if vd or vc or vo or vm or v3 or vj then
return mw.text.tag('span',{class='eico'}, eicons(vd, vc, vo, vm, v3, vj, _small, _link))
else
return ''
end
end,
icons = function(versions, _small, frame, _link) -- _link at last for historical compatibility
if not versions or versions=='' or versions=='dcom3' or versions=='dcom3j' then
return ''
end
local vd,vc,vo,vm,v3,vj = getVersionInfo(versions)
return eicons(vd, vc, vo, vm, v3, vj, _small, _link)
end,
eil = function(frame)
local args = frame:getParent().args
local _arg1 = trim(args[1] or '')
local _arg2 = trim(args[2] or '')
if _arg2 == '' then _arg2 = nil end
local text
if _arg2 then
-- intuitive pluralism
-- The comparisons are performed in order, so putting the more common ones in front gives the best performance.
if _arg2 == 's' then
local suffix1 = _arg1:sub(-1) -- cache for better performance.
local suffix2 = _arg1:sub(-2) -- cache for better performance.
if suffix1 == 'y' then
if suffix2 == 'ay' or suffix2 == 'ey' or suffix2 == 'iy' or suffix2 == 'oy' or suffix2 == 'uy' then
text = _arg1 .. 's' -- eg. ray->rays
else
text = _arg1:sub(1, -2) .. 'ies' -- eg. firefly->fireflies
end
elseif suffix2 == 'fe'then
text = _arg1:sub(1, -3) .. 'ves' -- eg. knife->knives
elseif suffix1 == 'f' and suffix2 ~= 'ff' then
text = _arg1:sub(1, -2) .. 'ves' -- eg. wolf->wolves, leaf->leaves, but buff->buffs
else
text = _arg1 .. 's'
end
elseif _arg2 == 'es' then
text = _arg1 .. 'es'
elseif _arg2 == 'ies' then
text = _arg1:sub(1, -2) .. 'ies'
elseif _arg2 == 'ves' then
if _arg1:sub(-2) == 'fe' then
text = _arg1:sub(1, -3) .. 'ves' --replace last 2 letters, e.g. knife->knives
elseif _arg1:sub(-1) == 'f' or _arg1:sub(-2) ~= 'ff' then
text = _arg1:sub(1, -2) .. 'ves' --replace last letter, e.g. wolf-wolves, leaf->leaves, but buff->buffs
end
else
text = _arg2
end
else
text = _arg1
end
local str = '<span class="eil">'
if trim(args['nolink'] or '') ~= '' or trim(args['nl'] or '') ~= '' or frame:preprocess('{{#dplvar:_eil_flag_nolink}}') ~= '' then
str = str .. text
else
if _arg1 == text then
str = str .. '[['.._arg1..']]'
else
str = str .. '[['.._arg1..'|'..text..']]'
end
end
local _eicons = trim(args['eicons'] or '')
if _eicons ~= '' then
str = str .. _eicons
else
local versions = frame:preprocess('{{#dplvar:_E-'.._arg1..'}}')
if versions~='' and versions~='dcom3' and versions~='dcom3j' then
local _small = trim(args['small'] or frame:preprocess('{{#dplvar:_eil_flag_small}}') or '')
if _small:sub(1,1) == 'n' then _small = nil end
local _iconlink = trim(args['iconlink'] or frame:preprocess('{{#dplvar:_eil_flag_iconlink}}') or '')
if _iconlink == '' then _iconlink = nil end
local vd,vc,vo,vm,v3,vj = getVersionInfo(versions)
str = str .. '<span class="eico">' .. eicons(vd, vc, vo, vm, v3, vj, _small , _iconlink) ..'</span>'
end
end
str = str .. '</span>'
return str
end,
}