Module:DemoTemplate
Appearance
![]() | This module is rated as beta, and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected. |
Usage
Simply place "#invoke:DemoTemplate|" before a call to a template. For example, {{#invoke:DemoTemplate|Convert|10|km|nmi|abbr=off}} yields the following:
- Lua error in package.lua at line 80: module 'Module:No globals' not found.
This module handles both named and positional parameters as well as equals signs in both parameter names and values correctly, so this (for example) will work: {{#invoke:DemoTemplate|1x|1=Some parameter with an = sign in it}}
- Lua error in package.lua at line 80: module 'Module:No globals' not found.
Note, however, that pipes, curly braces, etc. are not currently handled correctly by this module, so this (for example) will not work correctly: {{#invoke:DemoTemplate|1x|foo{{!}}bar}}
- Lua error in package.lua at line 80: module 'Module:No globals' not found.
require('Module:No globals')
local newBuffer = require('Module:OutputBuffer')
local mt = {}
function mt.__index(t, title)
return function(frame)
local getBuffer, print, printf = newBuffer()
printf('{{%s', title)
local ipairsArgs = {}
for k,v in ipairs(frame.args) do
ipairsArgs[k] = true
printf('|%s', v)
end
for k,v in pairs(frame.args) do
if not ipairsArgs[k] then
printf('|%s=%s', k, v)
end
end
print('}}')
return '<code>' .. mw.text.nowiki(getBuffer()) .. '</code> → ' .. frame:expandTemplate{title = title, args = frame.args}
end
end
return setmetatable({}, mt)