Leaguepedia | League of Legends Esports Wiki
[checked revision][checked revision]
((via Mediawiker ST3))
(finalExtends)
(22 intermediate revisions by the same user not shown)
Line 1: Line 1:
local util_args = require('Module:ArgsUtil')
+
local p = require('Module:EntityAbstract'):finalExtends()
local LOOKUP = mw.loadData('Module:Championnames')
 
   
  +
p.objectType = 'Champion'
local h = {}
 
  +
p.cssClass = 'champion-object'
  +
p.defaultlength = 'display'
  +
p.imagelength = 'link'
  +
p.filePattern = '%sSquare.png'
  +
p.imagesizes = { default = 25, display = 25, inline = 20, }
   
function h.getInfo(str, settings)
+
function p:name(opts)
if str == '' then str = nil end
+
if not opts then opts = {} end
  +
return opts.display or self:get(opts.len or self.defaultlength)
settings.vars = util_args.lookupVars(str, LOOKUP, true)
 
if settings.vars then
 
settings.vars = util_args.lookupVars(str, LOOKUP, true)
 
else
 
settings.vars = { link = str, display = str }
 
end
 
settings.linked = not settings.vars.exception
 
settings.link = settings.link or settings.vars.link
 
settings.display = settings.display or settings.vars.display
 
return
 
end
 
 
function h.linkedDisplay(linked, link, display)
 
if not linked then
 
return display
 
else
 
return ('[[%s|%s]]'):format(link, display)
 
end
 
end
 
 
local p = {}
 
function p.main(frame)
 
-- this should NEVER be called from Lua, only invoked from MW
 
local args = util_args.merge(true)
 
if not args[1] and not args.sub then
 
return ''
 
end
 
local style = args[2] or 'rightlinked'
 
if args.size then
 
if string.sub(args.size,-2) == "px" then
 
args.size = string.sub(args.size,1,-3)
 
end
 
end
 
return p[style](args[1], args)
 
end
 
 
function p.onlyimage(str, settings)
 
if not settings then settings = {} end
 
h.getInfo(str, settings)
 
return ('[[File:%sSquare.png|%spx|link=]]'):format(
 
settings.vars.link,
 
settings.size or '20'
 
)
 
end
 
 
function p.onlyimagelinked(str, settings)
 
if not settings then settings = {} end
 
h.getInfo(str, settings)
 
return ('[[File:%sSquare.png|%spx|link=%s]]'):format(
 
settings.vars.link,
 
settings.size or '20',
 
settings.linked and settings.link or ''
 
)
 
end
 
 
function p.championname(str, settings)
 
if not settings then settings = {} end
 
h.getInfo(str, settings)
 
return settings.vars.link
 
end
 
 
function p.namelinked(str, settings)
 
if not settings then settings = {} end
 
h.getInfo(str, settings)
 
if not settings.linked then
 
return settings.vars.display
 
else
 
return ('[[%s|%s]]'):format(settings.vars.link, settings.vars.display)
 
end
 
end
 
 
function p.leftlong(str, settings)
 
if not settings then settings = {} end
 
h.getInfo(str, settings)
 
return ('%s [[File:%sSquare.png|%spx|link=]]'):format(
 
settings.vars.display,
 
settings.vars.link,
 
settings.size or '20'
 
)
 
end
 
 
function p.leftlonglinked(str, settings)
 
if not settings then settings = {} end
 
h.getInfo(str, settings)
 
return ('%s [[File:%sSquare.png|%spx|link=%s]]'):format(
 
h.linkedDisplay(settings.linked, settings.vars.link, settings.vars.display),
 
settings.vars.link,
 
settings.size or '20',
 
settings.linked and settings.vars.link or ''
 
)
 
end
 
 
function p.rightlong(str, settings)
 
if not settings then settings = {} end
 
h.getInfo(str, settings)
 
return ('[[File:%sSquare.png|%spx|link=]] %s'):format(
 
settings.vars.link,
 
settings.size or '20',
 
settings.vars.display
 
)
 
end
 
 
function p.rightlonglinked(str, settings)
 
if not settings then settings = {} end
 
h.getInfo(str, settings)
 
local link
 
return ('[[File:%sSquare.png|%spx|link=%s]] %s'):format(
 
settings.vars.link,
 
settings.size or '20',
 
settings.linked and settings.vars.link or '',
 
h.linkedDisplay(settings.linked, settings.vars.link, settings.vars.display)
 
)
 
end
 
 
function p.champion ( frame )
 
local args = frame
 
if frame == mw.getCurrentFrame() then
 
args = require( 'Module:ProcessArgs' ).merge( true )
 
else
 
frame = mw.getCurrentFrame()
 
end
 
 
local Exceptions = mw.loadData('Module:Championexceptions')
 
local Styles
 
local Names
 
 
local input = args[1] or ''
 
local inputlc = string.lower(input)
 
local style = string.lower(args[2] or 'default')
 
 
if input == '' then
 
return ''
 
elseif Exceptions[inputlc] then
 
Names = Exceptions
 
Styles = require('Module:Championexceptionstyles')
 
style = Styles.styleNames(style)
 
else
 
Names = mw.loadData('Module:Championnames')
 
Styles = require('Module:Championstyles')
 
end
 
 
local settings = {
 
file = Names[inputlc] and Names[inputlc].link or input,
 
}
 
 
settings.link = args['link'] or settings.file
 
settings.display = args['display'] or settings.file
 
 
if args.size then
 
if string.sub(args.size,-2) == "px" then
 
settings.size = string.sub(args.size,1,-3)
 
else
 
settings.size = args.size
 
end
 
end
 
 
return Styles[style](settings)
 
 
 
end
 
end
   

Revision as of 05:40, 24 August 2020

Edit the documentation or categories for this module.

If you are an editor wanting to update the list of champions, see {{Championnames}}m


local p = require('Module:EntityAbstract'):finalExtends()

p.objectType = 'Champion'
p.cssClass = 'champion-object'
p.defaultlength = 'display'
p.imagelength = 'link'
p.filePattern = '%sSquare.png'
p.imagesizes = { default = 25, display = 25, inline = 20, }

function p:name(opts)
	if not opts then opts = {} end
	return opts.display or self:get(opts.len or self.defaultlength)
end

return p