Module:Documentation

From Meta Wiki
Jump to: navigation, search

Documentation for this module may be created at Module:Documentation/doc

-- <nowiki>
-- [[Template:Documentation]]
--

local p = {}

function p.doc( frame )
    local title = mw.title.getCurrentTitle()
    local args = frame:getParent().args
    local template = args[1] or mw.ustring.gsub( title.fullText, '/doc$', '' )
    local ret, cats, ret1, ret2, ret3
    
    -- subpage header
    if title.subpageText == 'doc' then
        ret = mw.html.create( 'table' )
            :addClass( 'messagebox' )
            :addClass( 'info' )
            :tag( 'tr' )
                :tag( 'td' )
                    :css( 'width', '40px' )
                    :wikitext( '[[File:Information icon-grey.svg|35px|center|link=]]' )
                    :done()
                :tag( 'td' )
                    :tag( 'b' )
                        :wikitext( 'This is a documentation subpage for [[' .. template .. ']].' )
                        :done()
                    :tag( 'div' )
                        :css({ ['font-size'] = '0.85em', ['line-height'] = '1.4em' })
                        :wikitext( 'It contains usage information, categories, and other content that is not part of the original template page.' )
                        :done()
                    :done()
                :done()
            :done()
    
        cats = ''

        if title.nsText == 'Template' then
            cats = '[[Category:Template documentation|' .. title.baseText .. ']]'
        end
        
        return tostring( ret ) .. cats
    end
    
    -- template header
    -- don't use mw.html as we aren't closing the main div tag
    -- @todo cleanup
    ret1 = '<div class="documentation">'
    
    ret2 = mw.html.create( 'div' )
        :addClass( 'doc-header' )
        :tag( 'span' )
            :addClass( 'doc-title' )
            :wikitext( '[[File:Documentation icon.png|32px|link=]] Template documentation' )
            :done()
        :tag( 'span' )
            :addClass( 'doc-editlinks' )
            :addClass( 'plainlinks' )
            :wikitext(
                '[[' .. tostring( mw.uri.fullUrl( template .. '/doc', {action='edit'} ) ) .. ' edit]] ' ..
                '[[' .. tostring( mw.uri.fullUrl( title.fullText, {action='purge'} ) ) .. ' purge]]'
            )
            :done()
        :done()
        
    ret3 = mw.html.create( 'div' )
        :addClass( 'doc-transclusion' )
        :wikitext( 'This documentation is transcluded from [[' .. template .. '/doc]].' )
        :done()
        
    return ret1 .. tostring( ret2 ) .. tostring( ret3 )
end

return p