Модуль:Documentation: Роздїлы міджі ревізіями

Матеріал з Коцкопедія
starcitizen>Alistair3149
Немає опису редагування
starcitizen>Alistair3149
(Use table instead of string concat for ret3)
Рядок 14: Рядок 14:
      
      
     local opts = frame.args;
     local opts = frame.args;
local preamble = opts.preamble;
      
      
     -- subpage header
     -- subpage header
Рядок 38: Рядок 37:
             ret2 = ''
             ret2 = ''
         end
         end
if (preamble and preamble ~= "") then
ret2 = preamble .. ret2
end


         return tostring( ret ) .. ret2 .. cats
         return tostring( ret ) .. ret2 .. cats
Рядок 76: Рядок 71:
             :done()
             :done()


     ret3 = dependencyList._main(nil, args.category, args.isUsed)
     ret3 = {}
    table.insert( ret3, dependencyList._main( nil, args.category, args.isUsed ) )
      
      
     if args.fromWikipedia then
     if args.fromWikipedia then
     ret3 = ret3 .. mbox(
     table.insert( ret3,
    string.format(
    mbox(
'This %s is imported from [https://en.wikipedia.org/wiki/%s %s] on Wikipedia.',
    string.format(
onModule and 'module' or 'template',
'This %s is imported from [https://en.wikipedia.org/wiki/%s %s] on Wikipedia.',
page,
onModule and 'module' or 'template',
page
page,
),
page
'This template is imported from the English Wikipedia. Although the visual appearance might be different, the functionality is identical. Please refer to the Wikipedia page for detailed documentation.',
),
{ icon = 'WikimediaUI-Logo-Wikipedia.svg' }
'This template is imported from the English Wikipedia. Although the visual appearance might be different, the functionality is identical. Please refer to the Wikipedia page for detailed documentation.',
    )
{ icon = 'WikimediaUI-Logo-Wikipedia.svg' }
)
  )
     end
     end
      
      
Рядок 94: Рядок 92:
     -- Testcase page
     -- Testcase page
     if title.subpageText == 'testcases' then
     if title.subpageText == 'testcases' then
    ret3 = ret3 .. hatnote(
    table.insert( ret3,
    string.format( 'This is the test cases page for the module [[Module:%s]].', title.baseText ),
    hatnote(
    { icon='WikimediaUI-LabFlask.svg' }
    string.format( 'This is the test cases page for the module [[Module:%s]].', title.baseText ),
    )
    { icon='WikimediaUI-LabFlask.svg' }
    end
    )
   
    )
    ret3 = ret3 .. '<div class="documentation-modulestats">'
end


    ret3 = ret3 .. require('Module:Module toc').main()
table.insert( ret3, '<div class="documentation-modulestats">' )
   
 
    -- Unit tests
-- Function list
    local testcaseTitle = title.baseText .. '/testcases'
table.insert( ret3, require( 'Module:Module toc' ).main() )
    if mw.title.new( testcaseTitle, 'Module' ).exists then
    -- There is probably a better way :P
-- Unit tests
    ret3 = ret3 .. frame:preprocess( '{{#invoke:' .. testcaseTitle .. '|run}}' )
local testcaseTitle = title.baseText .. '/testcases'
if mw.title.new( testcaseTitle, 'Module' ).exists then
-- There is probably a better way :P
table.insert( ret3, frame:preprocess( '{{#invoke:' .. testcaseTitle .. '|run}}' ) )
     end
     end
   
     ret3 = ret3 .. '</div>'
     table.insert( ret3, '</div>' )
     end
     end
if (preamble and preamble ~= "") then
ret3 = preamble .. ret3
end
          
          
     return ret1 .. tostring( ret2 ) .. '<div class="documentation-content">' .. ret3
     return ret1 .. tostring( ret2 ) .. '<div class="documentation-content">' .. table.concat( ret3 )
end
end



Ревізія 22:03, 6 юнія 2023

Документацію для цього модуля можна створити у Модуль:Documentation/документація

-- <nowiki>
local dependencyList = require( 'Module:DependencyList' )
local yn = require( 'Module:Yesno' )
local hatnote = require( 'Module:Hatnote' )._hatnote
local mbox = require( 'Module:Mbox' )._mbox
local p = {}

function p.doc( frame )
    local title = mw.title.getCurrentTitle()
    local args = frame:getParent().args
    local page = args[1] or mw.ustring.gsub( title.fullText, '/doc$', '' )
    local ret, cats, ret1, ret2, ret3
    local onModule = title.namespace == 828
    
    local opts = frame.args;
    
    -- subpage header
    if title.subpageText == 'doc' then
		ret = mbox(
			'This is a documentation subpage for ' .. page .. '.',
			string.format(
				'It contains usage information, categories, and other content that is not part of the [[' .. page .. '|original %s page]].',
				onModule and 'module' or 'template'
			),
			{ icon = 'WikimediaUI-Notice.svg' }
    	)

        if title.namespace == 10 then -- Template namespace
            cats = '[[Category:Template documentation|' .. title.baseText .. ']]'
            ret2 = dependencyList._main()
        elseif title.namespace == 828 then -- Module namespace
            cats = '[[Category:Module documentation|' .. title.baseText .. ']]'
            ret2 = dependencyList._main()
            ret2 = ret2 .. require('Module:Module toc').main()
        else
            cats = ''
            ret2 = ''
        end

        return tostring( ret ) .. ret2 .. cats
    end
    
    -- template header
    -- don't use mw.html as we aren't closing the main div tag
    ret1 = '<div class="documentation">'

    ret2 = mw.html.create( nil )
        :tag( 'div' )
            :addClass( 'documentation-header' )
            :tag( 'span' )
                :addClass( 'documentation-title' )
                :wikitext( string.format('%s documentation', onModule and 'Module' or 'Template') )
                :done()
            :tag( 'span' )
                :addClass( 'documentation-links plainlinks' )
                :wikitext(
                    '[[' .. tostring( mw.uri.fullUrl( page .. '/doc', {action='view'} ) ) .. ' view]]' ..
                    '[[' .. tostring( mw.uri.fullUrl( page .. '/doc', {action='edit'} ) ) .. ' edit]]' ..
                    '[[' .. tostring( mw.uri.fullUrl( page .. '/doc', {action='history'} ) ) .. ' history]]' ..
                    '[<span class="jsPurgeLink">[' .. tostring( mw.uri.fullUrl( title.fullText, {action='purge'} ) ) .. ' purge]</span>]'
                )
                :done()
            :done()
        :tag( 'div' )
            :addClass( 'documentation-subheader' )
            :tag( 'span' )
                :addClass( 'documentation-documentation' )
                :wikitext( 'This documentation is transcluded from [[' .. page .. '/doc]]. Changes can be proposed in the talk page.' )
                :done()
            :wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = 'Documentation/styles.css'} })
            :done()

    ret3 = {}
    table.insert( ret3, dependencyList._main( nil, args.category, args.isUsed ) )
    
    if args.fromWikipedia then
    	table.insert( ret3,
    		mbox(
	    		string.format(
					'This %s is imported from [https://en.wikipedia.org/wiki/%s %s] on Wikipedia.',
					onModule and 'module' or 'template',
					page,
					page
				),
				'This template is imported from the English Wikipedia. Although the visual appearance might be different, the functionality is identical. Please refer to the Wikipedia page for detailed documentation.',
				{ icon = 'WikimediaUI-Logo-Wikipedia.svg' }
			)
	   )
    end
    
    if title.namespace == 828 then
    	-- Testcase page
    	if title.subpageText == 'testcases' then
    		table.insert( ret3,
		    	hatnote(
		    		string.format( 'This is the test cases page for the module [[Module:%s]].', title.baseText ),
		    		{ icon='WikimediaUI-LabFlask.svg' }
		    	)
		    )
		end

		table.insert( ret3, '<div class="documentation-modulestats">' )

		-- Function list
		table.insert( ret3, require( 'Module:Module toc' ).main() )
	
		-- Unit tests
		local testcaseTitle = title.baseText .. '/testcases'
		if mw.title.new( testcaseTitle, 'Module' ).exists then
			-- There is probably a better way :P
			table.insert( ret3, frame:preprocess( '{{#invoke:' .. testcaseTitle .. '|run}}' ) )
    	end
	
    	table.insert( ret3, '</div>' )
    end
        
    return ret1 .. tostring( ret2 ) .. '<div class="documentation-content">' .. table.concat( ret3 )
end

return p

-- </nowiki>