Module:Documentation: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
--This module implements {{Documentation}}. | --This module implements {{Documentation}}. | ||
local p = {} | local p = {} |
Revision as of 21:34, 29 August 2013
Template:Module rating Template:Uses TemplateStyles This module displays a blue box containing documentation for templates, Lua modules, or other pages. The Template:Tl template invokes it.
Normal usage
For most uses, you should use the Template:Tl template; please see that template's page for its usage instructions and parameters.
Use in other modules
To use this module from another Lua module, first load it with require
:
local documentation = require('Module:Documentation').main
Then you can simply call it using a table of arguments.
documentation{content = 'Some documentation', ['link box'] = 'My custom link box'}
Please refer to the template documentation for usage instructions and a list of parameters.
Porting to other wikis
The module has a configuration file at Module:Documentation/config which is intended to allow easy translation and porting to other wikis. Please see the code comments in the config page for instructions. If you have any questions, or you need a feature which is not currently implemented, please leave a message at Template talk:Documentation to get the attention of a developer.
--This module implements {{Documentation}}. local p = {} function p.corps(frame) args = frame:getParent().args local page = mw.title.getCurrentTitle() doc = p.docname(page) local corps = {} if page.subpageText == 'sandbox' then table.insert(corps, '<div style="clear:both />') table.insert(corps, frame:preprocess('{{Template sandbox notice}}')) end table.insert(corps, p.header(page)) table.insert(corps, p.content(frame, page)) table.insert(corps, p.footer(page)) if args.raw then return frame:preprocess('<nowiki>' .. table.concat(corps) .. '</nowiki>\n:' .. os.clock()) end return table.concat(corps) end function p.docname(page) if not page.isSubpage then return page.subjectNsText .. ":" .. page.text .. "/doc" end if page.subpageText == 'doc' or page.subpageText == 'sandbox' or page.subpageText == 'testcases' then return page.subjectNsText .. ":" .. page.baseText .. "/doc" else return page.subjectNsText .. ":" .. page.text .. "/doc" end end function p.ifexist(page) if not page then return false end if mw.title.new(page).exists then return true end return false end function p.header(page) local header = {'<div class="template-documentation"'} if args.color then table.insert(header, ' style="background:') table.insert(header, args.color .. '"') end table.insert(header, '><div style="margin-bottom:1ex; border-bottom:1px solid #aaa; padding-bottom:3px;">') table.insert(header, '[[File:Template-info.png|50px|alt=Template documentation|link=]]') table.insert(header, '<span style="font-weight:bold; font-size:125%"> ') if args.heading then table.insert(header, args.heading) else table.insert(header, 'Template documentation') end table.insert(header, '</span>') if not args.content then table.insert(header, '<span class="mw-editsection plainlinks">[[') local arg = mw.title.new(args[1] or doc) if args[1] and p.ifexist(args[1]) or p.ifexist(doc) then table.insert(header, arg:fullUrl('action=view') .. ' view]') table.insert(header, '] [[') table.insert(header, arg:fullUrl('action=edit') .. ' edit]') table.insert(header, '] [[') table.insert(header, arg:fullUrl('action=history') .. ' history]') table.insert(header, '] [[') table.insert(header, page:fullUrl('action=purge') .. ' purge]') else table.insert(header, arg:fullUrl({["action"]="edit", ["preload"]="Template:Documentation/preload"})) table.insert(header, ' create]') end table.insert(header, ']</span>') end table.insert(header, '</div>') return table.concat(header) end function p.content(frame, page) local content = {} local arg = args[1] or doc if args.content then table.insert(content, '\n') table.insert(content, args.content) else table.insert(content, frame:preprocess('<nowiki />')) table.insert(content, '\n') if args[1] and p.ifexist(args[1]) or p.ifexist(doc) then table.insert(content, frame:preprocess('{{' .. arg .. '}}')) end end table.insert(content, '\n') table.insert(content, frame:preprocess('<nowiki />')) table.insert(content, '<div style="clear:both" />\n') return table.concat(content) end function p.footer(page) local footer = {} local arg = mw.title.new(args[1] or doc) table.insert(footer, '</div><div class="template-documentation plainlinks" ') table.insert(footer, 'style="font-style:italic; margin:2px 0px 0px; padding: 0.35em 0.9em') if args.color then table.insert(footer, '; background:') table.insert(footer, args.color) end table.insert(footer, ';">\n') if args.content then if args["link box"] then table.insert(footer, args["link box"]) else table.insert(footer, 'This documentation is directly included in this page.') end else if args[1] and p.ifexist(args[1]) or p.ifexist(doc) then table.insert(footer, 'The above [[Wikipedia:Template documentation|documentation]] is ') table.insert(footer, '[[Wikipedia:Transclusion|transcluded]] from [[') table.insert(footer, tostring(arg)) table.insert(footer, ']] <span style="font-size:89%; font-style:normal;">([') table.insert(footer, arg:fullUrl('action=edit')) table.insert(footer, ' edit] | [') table.insert(footer, arg:fullUrl('action=history') .. ' history])</span>.<br />') end table.insert(footer, 'Editors can experiment in this templates ') local sandbox = arg.subjectNsText .. ":" .. arg.baseText .. "/sandbox" local argsandbox = mw.title.new(sandbox) if p.ifexist(sandbox) then table.insert(footer, '[[' .. sandbox .. '|sandbox]]') table.insert(footer, ' <span style="font-size:89%; font-style:normal;">([') table.insert(footer, argsandbox:fullUrl('action=edit')) table.insert(footer, ' edit])</span>') else table.insert(footer, 'sandbox <span style="font-size:89%; font-style:normal;">([') table.insert(footer, argsandbox:fullUrl({["action"]="edit", ["preload"]="Template:Documentation/preload-sandbox"})) table.insert(footer, ' create])</span>') end table.insert(footer, ' and ') local test = arg.subjectNsText .. ":" .. arg.baseText .. "/testcases" local argtest = mw.title.new(test) if p.ifexist(test) then table.insert(footer, '[[' .. test .. '|testcases]]') table.insert(footer, ' <span style="font-size:89%; font-style:normal;">([') table.insert(footer, argtest:fullUrl('action=edit')) table.insert(footer, ' edit])</span>') else table.insert(footer, 'testcases <span style="font-size:89%; font-style:normal;">([') table.insert(footer, argtest:fullUrl({["action"]="edit", ["preload"]="Template:Documentation/preload-testcases"})) table.insert(footer, ' create])</span>') end table.insert(footer, ' pages.<br />Please add categories to the ') table.insert(footer, '<span class="plainlinks">[') if args[1] and p.ifexist(args[1]) or p.ifexist(doc) then table.insert(footer, arg:fullUrl('action=edit')) else table.insert(footer, arg:fullUrl({["action"]="edit", ["preload"]="Template:Documentation/preload"})) end table.insert(footer, ' /doc] subpage.') end table.insert(footer, '</div>') return table.concat(footer) end return p