Module:Demo
Appearance
![]() | This module is rated as ready for general use. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing. |
![]() | This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
Usage
Usage via templates
This module supports {{Demo}}
{{#invoke:Demo|main}}
and {{Demo inline}}
{{#invoke:Demo|inline}}
The input must be wrapped in <nowiki>
tags or else it may be processed before the module can read it.
Usage in a module
If you want to use this in another module (such as to make the output prettier), you can get values like so:
require('Module:demo').get(frame)
Function get()
returns a table containing:
source
= the source code (without<syntaxhighlight>
wrappers, characters substituted with html entities)output
= the execution result of the source.frame
= the frame from which this template took the parameter.
By default, get()
takes the first parameter of frame. If the frame uses a different parameter name for the nowiki-wrapped source, then place that name (as a string) as the second parameter, like so require('Module:demo').get(frame, 'alternate_name')
Example:
local p = {}
function p.main(frame)
local parts = require('Module:demo').get(frame)
return '…Pretty HTML… <pre>' .. parts.source .. '</pre> …More pretty HTML… ' .. parts.output .. ' …Even more pretty HTML…'
end
return p
See also
- Template:Nowiki template demo which uses Module:Template test case
- Template:Automarkup which uses Module:Automarkup
local p = {}
function p.get(frame, arg)
frame = frame:getParent() or frame
return {
source = mw.text.encode(mw.text.unstripNoWiki(frame.args[arg or 1] or '')),
output = frame:preprocess(mw.text.unstripNoWiki(frame.args[arg or 1] or '')),
frame = frame
}
end
function p.main(frame)
local show = p.get(frame)
local br = ''
for k = 1, (show.frame.args.br or 1) do
br = br .. '<br>'
end
if show[show.frame.args.result_arg] then
return show[show.frame.args.result_arg]
end
return string.format('<pre%s>%s</pre>%s%s', show.frame.args.style and string.format(" style='%s'", show.frame.args.style) or '', show.source, br, show.output)
end
return p