Mediawiki >ExE Boss |
|
Line 1: |
Line 1: |
| -- This implements [[Template:Tlg]] | | -- This implements Template:Tlg |
| local getArgs = require('Module:Arguments').getArgs | | local getArgs = require('Module:Arguments').getArgs |
| local yesno = require('Module:Yesno')
| |
|
| |
| local cfg = mw.loadData('Module:Template link general/config')
| |
|
| |
| local p = {} | | local p = {} |
|
| |
|
Line 37: |
Line 33: |
|
| |
|
| local function linkTitle(args) | | local function linkTitle(args) |
| if yesno(args.nolink) then | | if _ne(args.nolink) then |
| return args[1] | | return args['1'] |
| end | | end |
| | | |
| local titleObj | | local titleObj |
| local titlePart = '[[' | | local titlePart = '[[' |
| if args[1] then | | if args['1'] then |
| -- This handles :Page and other NS | | -- This handles :Page and other NS |
| titleObj = mw.title.new(args[1], 'Template') | | titleObj = mw.title.new(args['1'], 'Template') |
| else | | else |
| titleObj = mw.title.getCurrentTitle() | | titleObj = mw.title.getCurrentTitle() |
| end | | end |
| | | |
| titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or | | titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or |
| addTemplate(args[1])) | | addTemplate(args['1'])) |
| | | |
| local textPart = args.alttext | | local textPart = args.alttext |
| if not _ne(textPart) then | | if not _ne(textPart) then |
| if titleObj ~= nil then | | if titleObj ~= nil then |
| textPart = titleObj:inNamespace("Template") and args[1] or titleObj.fullText | | textPart = titleObj:inNamespace("Template") and args['1'] or titleObj.fullText |
| else | | else |
| -- redlink | | -- redlink |
| textPart = args[1] | | textPart = args['1'] |
| end | | end |
| end | | end |
| | | |
| if yesno(args.brace) then | | if _ne(args.subst) then |
| | -- HACK: the ns thing above is probably broken |
| | textPart = 'subst:' .. textPart |
| | end |
| | |
| | if _ne(args.brace) then |
| textPart = nw('{{') .. textPart .. nw('}}') | | textPart = nw('{{') .. textPart .. nw('}}') |
| elseif yesno(args.braceinside) then | | elseif _ne(args.braceinside) then |
| textPart = nw('{') .. textPart .. nw('}') | | textPart = nw('{') .. textPart .. nw('}') |
| end | | end |
| | | |
| titlePart = titlePart .. '|' .. textPart .. ']]' | | titlePart = titlePart .. '|' .. textPart .. ']]' |
| if yesno(args.braceinside) then | | if _ne(args.braceinside) then |
| titlePart = nw('{') .. titlePart .. nw('}') | | titlePart = nw('{') .. titlePart .. nw('}') |
| end | | end |
Line 79: |
Line 80: |
| local args = getArgs(frame, { | | local args = getArgs(frame, { |
| trim = true, | | trim = true, |
| removeBlanks = false, | | removeBlanks = false |
| wrappers = {
| |
| 'Template:Tlg',
| |
| },
| |
| }) | | }) |
| return p._main(args) | | return p._main(args) |
Line 88: |
Line 86: |
|
| |
|
| function p._main(args) | | function p._main(args) |
| -- TemplateStyles
| | local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname) |
| local templateStyles = {
| | local italic = _ne(args.italic) or _ne(args.italics) |
| mono = false,
| | local dontBrace = _ne(args.brace) or _ne(args.braceinside) |
| nowrap = false,
| | local code = _ne(args.code) or _ne(args.tt) |
| }
| | |
| | |
| local bold = yesno(args.bold) or yesno(args.boldlink) or yesno(args.boldname) | |
| local italic = yesno(args.italic) or yesno(args.italics) | |
| local dontBrace = yesno(args.brace) or yesno(args.braceinside) | |
| local code = yesno(args.code) or yesno(args.tt) | |
| local classes = {} | |
| | |
| -- Build the link part | | -- Build the link part |
| local titlePart = linkTitle(args) | | local titlePart = linkTitle(args) |
| if bold then titlePart = "'''" .. titlePart .. "'''" end | | if bold then titlePart = "'''" .. titlePart .. "'''" end |
| | | if _ne(args.nowrapname) then titlePart = '<span class="nowrap">' .. titlePart .. '</span>' end |
| if yesno(args.subst) then | | |
| local substLink = cfg['subst-link']
| |
| if _ne(substLink) and yesno(args['link subst']) then
| |
| titlePart = '[[' .. substLink .. '|subst]]:' .. titlePart
| |
| else
| |
| titlePart = 'subst:' .. titlePart
| |
| end
| |
| end
| |
| | |
| if yesno(args.nowrapname) then
| |
| templateStyles.nowrap = true
| |
| titlePart = '<span class="nowrap">' .. titlePart .. '</span>'
| |
| end | |
| | |
| -- Build the arguments | | -- Build the arguments |
| local textPart = "" | | local textPart = "" |
Line 126: |
Line 104: |
| textPartBuffer = textPartBuffer .. '|' | | textPartBuffer = textPartBuffer .. '|' |
| if val ~= "" then | | if val ~= "" then |
| if yesno(args.nowiki) then | | if _ne(args.nowiki) then |
| -- Unstrip nowiki tags first because calling nw on something that already contains nowiki tags will | | -- Unstrip nowiki tags first because calling nw on something that already contains nowiki tags will |
| -- mangle the nowiki strip marker and result in literal UNIQ...QINU showing up | | -- mangle the nowiki strip marker and result in literal UNIQ...QINU showing up |
Line 137: |
Line 115: |
| i = i+1 | | i = i+1 |
| end | | end |
|
| |
| local tagName = nil
| |
| local css = nil
| |
|
| |
|
| -- final wrap | | -- final wrap |
| local ret = titlePart .. textPart | | local ret = titlePart .. textPart |
| if not dontBrace then ret = nw('{{') .. ret .. nw('}}') end | | if not dontBrace then ret = nw('{{') .. ret .. nw('}}') end |
| if yesno(args.a) then ret = nw('*') .. ' ' .. ret end | | if _ne(args.a) then ret = nw('*') .. ' ' .. ret end |
| if yesno(args.kbd) then | | if _ne(args.kbd) then ret = '<kbd>' .. ret .. '</kbd>' end |
| tagName = 'kbd' | | if code then |
| | ret = '<code>' .. ret .. '</code>' |
| | elseif _ne(args.plaincode) then |
| | ret = '<code style="border:none;background:transparent;">' .. ret .. '</code>' |
| end | | end |
| | | if _ne(args.nowrap) then ret = '<span class="nowrap">' .. ret .. '</span>' end |
| if yesno(args.mono) then | | |
| templateStyles.mono = true
| | --[[ Wrap as html?? |
| table.insert(classes, 'monospaced')
| | local span = mw.html.create('span') |
| end
| | span:wikitext(ret) |
| | | --]] |
| local plaincode = yesno(args.plaincode) and not code
| | if _ne(args.debug) then ret = ret .. '\n<pre>' .. mw.text.encode(mw.dumpObject(args)) .. '</pre>' end |
| if code or plaincode then
| | return ret |
| if tagName then
| |
| -- kbd == true && code == true
| |
| ret = ('<%s>%s</%s>'):format(tagName, ret, tagName)
| |
| end
| |
| tagName = 'code'
| |
| if plaincode then
| |
| css = {
| |
| background = 'transparent',
| |
| border = 'none',
| |
| }
| |
| end
| |
| end | |
| | |
| if yesno(args.nowrap) then | |
| templateStyles.nowrap = true
| |
| table.insert(classes, 'nowrap')
| |
| end | |
| | |
| if tagName or #classes > 0 or css then
| |
| local span = mw.html.create(tagName or 'span')
| |
| :addClass(table.concat(classes, ' '))
| |
| :wikitext(ret)
| |
| | |
| if css then
| |
| span:css(css)
| |
| end
| |
| ret = tostring(span:allDone())
| |
| end | |
| | |
| local ts = {}
| |
| if templateStyles.mono then | |
| table.insert(ts, mw.getCurrentFrame():extensionTag{
| |
| name = 'templatestyles',
| |
| args = { src = 'Template:Mono/styles.css' }
| |
| })
| |
| end
| |
| | |
| if templateStyles.nowrap then
| |
| table.insert(ts, mw.getCurrentFrame():extensionTag{
| |
| name = 'templatestyles',
| |
| args = { src = 'Template:Nowrap/styles.css' }
| |
| })
| |
| end
| |
| | |
| if yesno(args.debug) then
| |
| ret = ret .. '\n<pre>' .. mw.text.encode(mw.dumpObject(args)) .. '</pre>'
| |
| end
| |
| | |
| return table.concat(ts) .. ret | |
| end | | end |
|
| |
|
| return p | | return p |