Этот модуль реализует
local p = {} p.list = function( f ) local args = f:getParent().args local version = args[1] or mw.title.getCurrentTitle().rootText f:callParserFunction ( '#dplvar:set', 'parentVersion', version ) local categories = args.categories or 'экспериментальные предварительные сборки, предварительные сборки, пре-релизы, кандидаты на релиз' local devVersions = {} for category in mw.text.gsplit( categories, '%s*,%s*' ) do table.insert( devVersions, f:callParserFunction( '#dpl:', { --[1] = '', category = category .. ' ' .. version, format = ',|%PAGE%', ordermethod = 'sortkey', debug = '1' } ) ) end devVersions = mw.text.trim( table.concat( devVersions ), '%s|' ) local content = {} for v in mw.text.gsplit( devVersions, '|' ) do local wikitext = mw.title.new( v ):getContent() if not wikitext:match( '<onlyinclude>' ) then wikitext = '<onlyinclude>' .. wikitext .. '</onlyinclude>' end table.insert( content, '<onlyinclude>=' .. v .. '=</onlyinclude>' .. wikitext ) end content = table.concat( content ) :gsub( '^.-<onlyinclude>%s*', '\n' ) :gsub( '%s*</onlyinclude>.-<onlyinclude>%s*', '\n' ) :gsub( '%s*</onlyinclude>.*$', '\n' ) :gsub( '\n(=+ *[^\n]+ *=+)', '\n=%1=' ) return f:preprocess( mw.text.trim( content ) ) end return p