[checked revision] | [checked revision] |
((via Mediawiker ST3)) |
(finalExtends) |
||
(22 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | local |
+ | 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 |
+ | function p:name(opts) |
− | if |
+ | 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