|
|
(One intermediate revision by one other user not shown) |
Line 1: |
Line 1: |
| -- This module implements [[Template:Icon]]. | | -- This module implements [[Template:Icon]]. |
|
| |
|
| require("Module:No globals") | | require("strict") |
| | local yesNo = require("Module:Yesno") |
| | local getArgs = require("Module:Arguments").getArgs |
| | local getPlain = nil |
|
| |
|
| local DATA_MODULE = 'Module:Icon/data'
| |
| local p = {} | | local p = {} |
|
| |
|
| | -- Determine whether we're being called from a sandbox |
| | local sandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true) and '/sandbox' or '' |
| | |
| | -- Implements [[Template:Icon]] |
| | -- Returns the icon image corresponding to a string (like 'B') |
| function p._main(args, data) | | function p._main(args, data) |
| data = data or mw.loadData(DATA_MODULE) | | local data_module = 'Module:Icon/data'..sandbox |
| | data = data or mw.loadData(data_module) |
| local code = args.class or args[1] | | local code = args.class or args[1] |
| local iconData | | local iconData |
Line 18: |
Line 26: |
| end | | end |
| return string.format( | | return string.format( |
| '[[File:%s%s%s|%s|class=noviewer]]', | | '[[File:%s%s%s|%s|class=noviewer|alt=%s]]', |
| iconData.image, | | iconData.image, |
| iconData.tooltip and '|' .. iconData.tooltip or '', | | iconData.tooltip and '|' .. iconData.tooltip or '', |
| iconData.link == false and '|link=' or '', | | iconData.link == false and '|link=' or '', |
| args.size or '16x16px' | | args.size or '16x16px', |
| | iconData.alt or '' |
| ) | | ) |
| | end |
| | |
| | -- Implements [[Template:Icon link]], a superset of [[Template:Icon]] |
| | -- Returns an icon, plus a suitably formatted wikilink |
| | function p._link(args, data) |
| | args.size = args.size or args.iconsize |
| | local icon = p._main(args, data) |
| | -- If no link given in args[2], default back to [[Template:Icon]] |
| | if not args[2] then |
| | return icon |
| | end |
| | -- Strip wiki markup out of link |
| | getPlain = getPlain or require("Module:Text").Text().getPlain |
| | local link = getPlain(args[2]) |
| | local display = args[3] or args[2] |
| | -- italicize display string, if requested |
| | if yesNo(args.i) or yesNo(args.italic) or yesNo(args.italics) then |
| | display = '<i>'..display..'</i>' |
| | end |
| | -- if display is link, just use standard wlink |
| | if link == display then |
| | return icon..' [['..link..']]' |
| | end |
| | return icon..' [['..link..'|'..display..']]' |
| end | | end |
|
| |
|
| function p.main(frame) | | function p.main(frame) |
| local args = {} | | local args = getArgs(frame,{parentFirst=true}) |
| for k, v in pairs(frame:getParent().args) do
| |
| args[k] = v
| |
| end
| |
| return p._main(args) | | return p._main(args) |
| | end |
| | |
| | function p.link(frame) |
| | local args = getArgs(frame,{parentFirst=true}) |
| | return p._link(args) |
| end | | end |
|
| |
|
| return p | | return p |