Home
Random
Log in
Settings
About BTA-Mirror
Disclaimers
BTA-Mirror
Search
Editing
Module:Documentation
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local p = {} local defaultDocPage = 'doc' local getType = function( namespace, page ) local pageType = 'template' if namespace == 'Module' then pageType = 'module' elseif namespace == 'Widget' then pageType = 'widget' elseif page.fullText:gsub( '/' .. defaultDocPage .. '$', '' ):find( '%.css$' ) then pageType = 'stylesheet' elseif page.fullText:gsub( '/' .. defaultDocPage .. '$', '' ):find( '%.js$' ) then pageType = 'script' elseif namespace == 'MediaWiki' then pageType = 'message' end return pageType end -- Creating a documentation page or transclusion through {{subst:docc}} function p.create( f ) local args = require( 'Module:ProcessArgs' ).norm() local page = mw.title.getCurrentTitle() local docPage = args.page or page.nsText .. ':' .. page.baseText .. '/' .. defaultDocPage local out if not args.content and tostring( page ) == docPage then out = f:preprocess( '{{subst:Template:Documentation/preload}}' ) else local templateArgs = {} for _, key in ipairs{ 'type', 'page', 'content' } do local val = args[key] if val then if key == 'content' then val = '\n' .. val .. '\n' end table.insert( templateArgs, key .. '=' .. val ) end end out = '{{documentation|' .. table.concat( templateArgs, '|' ) .. '}}' out = out:gsub( '|}}', '}}' ) if not args.content then out = out .. '\n<!-- Put categories on the documentation page -->' end end if not mw.isSubsting() then out = f:preprocess( out ) if not args.nocat then out = out .. '[[Category:Pages with templates requiring substitution]]' end end return out end -- Header on the documentation page function p.docPage( f ) local args = require( 'Module:ProcessArgs' ).merge( true ) local badDoc = args.baddoc if f:callParserFunction( '#dplvar', '$doc noheader' ) == '1' then if badDoc then f:callParserFunction( '#dplvar:set', '$doc bad', '1' ) end return end local page = mw.title.getCurrentTitle() local subpage = page.subpageText if subpage == 'sandbox' or subpage == 'testcases' then page = page.basePageTitle end local namespace = page.nsText local pageType = mw.ustring.lower( args.type or getType( namespace, page ) ) local body = mw.html.create( 'div' ):addClass( 'documentation-header' ) body :addClass( badDoc and 'documentation-badDoc' or '' ) :css{ ['margin-bottom'] = '0.8em', padding = '0.8em 1em 0.7em', ['background-color'] = '#' .. ( badDoc and 'F9F2EA' or 'EAF4F9' ), border = '1px solid #AAA' } :tag( 'div' ) :attr( 'id', 'documentation-header-tools' ) :css( 'float', 'right' ) :wikitext( '[[', page:fullUrl( 'action=purge' ), ' ' .. f:preprocess('{{lc:{{int:page-header-action-button-purge}}}}') .. ']]' ) :done() :wikitext( 'This is the documentation page. It ', pageType == 'module' and 'will' or 'should', ' be transcluded into the main ', pageType, ' page. ', 'See [[Template:Documentation]] for more information' ) if badDoc then body:wikitext( "<br>'''This ", pageType, "'s documentation needs improving or additional information.'''" ) end if not ( args.nocat or namespace == 'User' ) then body:wikitext( '[[Category:Documentation pages]]' ) end return body end -- Wrapper around the documentation on the main page function p.page( f ) -- mw.text.trim uses mw.ustring.gsub, which silently fails on large strings local function trim( s ) return (s:gsub( '^[\t\r\n\f ]+', '' ):gsub( '[\t\r\n\f ]+$', '' )) --return string.gsub( s, '^[\t\r\n\f ]*(.-)[\t\r\n\f ]*$', '%1' ) end local args = require( 'Module:ProcessArgs' ).merge( true ) local page = mw.title.getCurrentTitle() local subpage = page.subpageText if subpage == 'sandbox' or subpage == 'testcases' then page = page.basePageTitle end local namespace = page.nsText local docText = trim( args.content or '' ) if docText == '' then docText = nil end local docPage local noDoc if docText then docPage = page else docPage = mw.title.new( args.page or namespace .. ':' .. page.text .. '/' .. defaultDocPage ) noDoc = args.nodoc or not docPage.exists end local badDoc = args.baddoc local pageType = mw.ustring.lower( args.type or getType( namespace, page ) ) if not docText and not noDoc then f:callParserFunction( '#dplvar:set', '$doc noheader', '1' ) docText = trim( f:expandTemplate{ title = ':' .. docPage.fullText } ) if f:callParserFunction( '#dplvar', '$doc bad' ) == '1' then badDoc = 1 end if docText == '' then docText = nil noDoc = 1 end end if docText then docText = '\n' .. docText .. '\n' end local action = f:preprocess('{{lc:{{int:edit}}}}') local preload = '' local docClass = '' local colour = 'EAF4F9' local message local category if noDoc then action = f:preprocess('{{lc:{{int:create}}}}') preload = '&preload=Template:Documentation/preload' docClass = 'documentation-noDoc' colour = 'F9EAEA' message = "'''This " .. pageType .. " has no documentation. " .. "If you know how to use this " .. pageType .. ", please create it.'''" if not ( args.nocat or namespace == 'User' ) then category = pageType .. 's with no documentation' if not mw.title.new( 'Category:' .. category ).exists then category = 'Pages with no documentation' end end elseif badDoc then docClass = 'documentation-badDoc' colour = 'F9F2EA' message = "'''This " .. pageType .. "'s documentation needs improving or additional information.'''\n" if not ( args.nocat or namespace == 'User' ) then category = pageType .. 's with bad documentation' if not mw.title.new( 'Category:' .. category ).exists then category = 'Pages with bad documentation' end end end local links = { '<span class="no-external-icon">[' .. docPage:fullUrl( 'action=edit' .. preload ) .. ' ' .. action .. ']</span>', '<span class="no-external-icon">[' .. docPage:fullUrl( 'action=history' ) .. ' ' .. f:preprocess('{{lc:{{int:history short}}}}') .. ']</span>', '<span class="no-external-icon">[' .. page:fullUrl( 'action=purge' ) .. ' ' .. f:preprocess('{{lc:{{int:page-header-action-button-purge}}}}') .. ']</span>' } if not noDoc and page ~= docPage then table.insert( links, 1, '[[' .. docPage.fullText .. '|' .. f:preprocess('{{lc:{{int:view}}}}') .. ']]' ) end links = mw.html.create( 'span' ) :attr( 'id', 'documentation-header-tools' ) :css( 'float', 'right' ) :wikitext( mw.text.nowiki( '[' ), table.concat( links, ' | ' ), mw.text.nowiki( ']' ) ) local body = mw.html.create( 'div' ):addClass( 'documentation' ) body :addClass( docClass ) :css{ ['background-color'] = '#' .. colour, border = '1px solid #AAA', padding = '0.8em 1em 0.7em', ['margin-top'] = '1em', clear = 'both' } local header = mw.html.create( 'div' ) :addClass( 'documentation-header-top' ) :css{ margin = '-0.8em -1em 0.8em', padding = '0.8em 1em 0.7em', ['background-color'] = '#EAF4F9', ['border-bottom'] = 'inherit' } header :node( links ) :tag( 'span' ) :attr( 'id', 'documentation-header-title' ) :css{ ['font-weight'] = 'bold', ['font-size'] = '130%', ['margin-right'] = '1em', ['line-height'] = '1' } :wikitext( 'Documentation' ) local codePages = { module = true, stylesheet = true, script = true, } if not noDoc and codePages[pageType] then header :tag( 'span' ) :attr( 'id', 'documentation-jump-to-code' ) :css( 'white-space', 'nowrap' ) :wikitext( '[[#the-code|Jump to code β΄]]' ) end body :node( header ):done() :wikitext( message ) :wikitext( docText ) if not noDoc and page ~= docPage then body :tag( 'div' ) :addClass( 'documentation-header-bottom' ) :css{ margin = '0.7em -1em -0.7em', ['background-color'] = '#EAF4F9', ['border-top'] = 'inherit', padding = '0.8em 1em 0.7em', clear = 'both' } :node( links ) :wikitext( 'The above documentation is transcluded from [[', docPage.fullText, ']].' ) end local anchor = '' if not noDoc and pageType ~= 'template' and pageType ~= 'message' then anchor = mw.html.create( 'div' ):attr( 'id', 'the-code' ) end return tostring( body ) .. tostring( anchor ) end return p
Summary:
Please note that all contributions to BTA-Mirror may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
BTA-Mirror:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Documentation/doc
(
edit
)