| Line 1: |
Line 1: |
| − | -- This implements Template:Tlg | + | -- This implements Template:Template link general and various other templates in its family |
| | local getArgs = require('Module:Arguments').getArgs | | local getArgs = require('Module:Arguments').getArgs |
| | local p = {} | | local p = {} |
| Line 34: |
Line 34: |
| | local function linkTitle(args) | | local function linkTitle(args) |
| | if _ne(args.nolink) then | | if _ne(args.nolink) then |
| − | return args['1'] | + | if _ne(args.subst) then |
| | + | return 'subst:' .. args['1'] |
| | + | else |
| | + | return args['1'] |
| | + | end |
| | end | | end |
| | | | |
| Line 90: |
Line 94: |
| | local dontBrace = _ne(args.brace) or _ne(args.braceinside) | | local dontBrace = _ne(args.brace) or _ne(args.braceinside) |
| | local code = _ne(args.code) or _ne(args.tt) | | local code = _ne(args.code) or _ne(args.tt) |
| | + | local show_result = _ne(args._show_result) |
| | + | local expand = _ne(args._expand) |
| | | | |
| | -- Build the link part | | -- Build the link part |
| Line 98: |
Line 104: |
| | -- Build the arguments | | -- Build the arguments |
| | local textPart = "" | | local textPart = "" |
| − | local textPartBuffer = "" | + | local textPartBuffer = "|" |
| | + | local codeArguments = {} |
| | + | local codeArgumentsString = "" |
| | local i = 2 | | local i = 2 |
| | + | local j = 1 |
| | while args[i] do | | while args[i] do |
| | local val = args[i] | | local val = args[i] |
| − | textPartBuffer = textPartBuffer .. '|'
| |
| | if val ~= "" then | | if val ~= "" then |
| | if _ne(args.nowiki) then | | if _ne(args.nowiki) then |
| Line 109: |
Line 117: |
| | val = nw(mw.text.unstripNoWiki(val)) | | val = nw(mw.text.unstripNoWiki(val)) |
| | end | | end |
| − | if italic then val = '<span style="font-style:italic;">' .. val .. '</span>' end | + | local k, v = string.match(val, "(.*)=(.*)") |
| | + | if not k then |
| | + | codeArguments[j] = val |
| | + | j = j + 1 |
| | + | else |
| | + | codeArguments[k] = v |
| | + | end |
| | + | codeArgumentsString = codeArgumentsString .. textPartBuffer .. val |
| | + | if italic then |
| | + | val = '<span style="font-style:italic;">' .. val .. '</span>' |
| | + | end |
| | textPart = textPart .. textPartBuffer .. val | | textPart = textPart .. textPartBuffer .. val |
| − | textPartBuffer = ""
| |
| | end | | end |
| − | i = i+1 | + | i = i + 1 |
| | end | | end |
| | | | |
| Line 124: |
Line 141: |
| | ret = '<code>' .. ret .. '</code>' | | ret = '<code>' .. ret .. '</code>' |
| | elseif _ne(args.plaincode) then | | elseif _ne(args.plaincode) then |
| − | ret = '<code style="border:none;background:transparent;">' .. ret .. '</code>' | + | ret = '<code style="border:none;background:transparent;color:inherit">' .. ret .. '</code>' |
| | end | | end |
| | if _ne(args.nowrap) then ret = '<span class="nowrap">' .. ret .. '</span>' end | | if _ne(args.nowrap) then ret = '<span class="nowrap">' .. ret .. '</span>' end |
| Line 133: |
Line 150: |
| | --]] | | --]] |
| | if _ne(args.debug) then ret = ret .. '\n<pre>' .. mw.text.encode(mw.dumpObject(args)) .. '</pre>' end | | if _ne(args.debug) then ret = ret .. '\n<pre>' .. mw.text.encode(mw.dumpObject(args)) .. '</pre>' end |
| | + | |
| | + | if show_result then |
| | + | local result = mw.getCurrentFrame():expandTemplate{title = addTemplate(args[1]), args = codeArguments} |
| | + | ret = ret .. " → " .. result |
| | + | end |
| | + | |
| | + | if expand then |
| | + | local query = mw.text.encode('{{' .. addTemplate(args[1]) .. string.gsub(codeArgumentsString, textPartBuffer, "|") .. '}}') |
| | + | local url = mw.uri.fullUrl('special:ExpandTemplates', 'wpInput=' .. query) |
| | + | mw.log() |
| | + | ret = ret .. " [" .. tostring(url) .. "]" |
| | + | end |
| | + | |
| | return ret | | return ret |
| | end | | end |
| | | | |
| | return p | | return p |