<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.helmstedt-wiki.de/index.php?action=history&amp;feed=atom&amp;title=Modul%3AVorlage%3ALuaModuleDoc</id>
	<title>Modul:Vorlage:LuaModuleDoc - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://www.helmstedt-wiki.de/index.php?action=history&amp;feed=atom&amp;title=Modul%3AVorlage%3ALuaModuleDoc"/>
	<link rel="alternate" type="text/html" href="https://www.helmstedt-wiki.de/index.php?title=Modul:Vorlage:LuaModuleDoc&amp;action=history"/>
	<updated>2026-04-12T17:54:38Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Helmstedt-Wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://www.helmstedt-wiki.de/index.php?title=Modul:Vorlage:LuaModuleDoc&amp;diff=29460&amp;oldid=prev</id>
		<title>Admin: AZ: Die Seite wurde neu angelegt: local LuaModuleDoc = { suite  = &quot;LuaModuleDoc&quot;,                        serial = &quot;2024-03-01&quot;,                        item   = 12981914,                        frame  = false,                        ns     = -9999,                                 -- current namespace number                        nsDocs = -99999,                                 -- central documentation namespace number…</title>
		<link rel="alternate" type="text/html" href="https://www.helmstedt-wiki.de/index.php?title=Modul:Vorlage:LuaModuleDoc&amp;diff=29460&amp;oldid=prev"/>
		<updated>2025-01-29T17:40:42Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/index.php?title=Hilfe:Zusammenfassung_und_Quellen&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Hilfe:Zusammenfassung und Quellen (Seite nicht vorhanden)&quot;&gt;AZ&lt;/a&gt;: Die Seite wurde neu angelegt: local LuaModuleDoc = { suite  = &amp;quot;LuaModuleDoc&amp;quot;,                        serial = &amp;quot;2024-03-01&amp;quot;,                        item   = 12981914,                        frame  = false,                        ns     = -9999,                                 -- current namespace number                        nsDocs = -99999,                                 -- central documentation namespace number…&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local LuaModuleDoc = { suite  = &amp;quot;LuaModuleDoc&amp;quot;,&lt;br /&gt;
                       serial = &amp;quot;2024-03-01&amp;quot;,&lt;br /&gt;
                       item   = 12981914,&lt;br /&gt;
                       frame  = false,&lt;br /&gt;
                       ns     = -9999,&lt;br /&gt;
                                -- current namespace number&lt;br /&gt;
                       nsDocs = -99999,&lt;br /&gt;
                                -- central documentation namespace number&lt;br /&gt;
                       title  = false,&lt;br /&gt;
                                -- current page Title object&lt;br /&gt;
                       transl = false }&lt;br /&gt;
--[=[&lt;br /&gt;
Support {{LuaModuleDoc}}&lt;br /&gt;
* nav()&lt;br /&gt;
* failsafe()&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local Failsafe = LuaModuleDoc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function fetch( arg, assign )&lt;br /&gt;
    -- Retrieve template argument&lt;br /&gt;
    -- Precondition:&lt;br /&gt;
    --     arg     -- string or number; argument identifier&lt;br /&gt;
    --     assign  -- any, optional; default value&lt;br /&gt;
    -- Uses:&lt;br /&gt;
    --     &amp;gt;  LuaModuleDoc.frame&lt;br /&gt;
    local r = LuaModuleDoc.frame.args[ arg ]&lt;br /&gt;
    if type( r ) ~= &amp;quot;string&amp;quot; then&lt;br /&gt;
        if assign == nil then&lt;br /&gt;
            r = &amp;quot;{{{&amp;lt;&amp;quot; .. arg .. &amp;quot;&amp;gt;}}}&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
            r = assign&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- fetch()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function catIfDefined( slot )&lt;br /&gt;
    -- Categorize if category defined&lt;br /&gt;
    --     slot  -- string; Config entry&lt;br /&gt;
    -- Return:&lt;br /&gt;
    --     string or false:  categorization, if any&lt;br /&gt;
    -- Uses:&lt;br /&gt;
    --     mw.title.makeTitle()&lt;br /&gt;
    local s = fetch( slot, &amp;quot;&amp;quot; )&lt;br /&gt;
    local r&lt;br /&gt;
    if #s &amp;gt; 0 then&lt;br /&gt;
        local t = mw.title.makeTitle( &amp;quot;Category&amp;quot;, s )&lt;br /&gt;
        if t.exists then&lt;br /&gt;
            r = string.format( &amp;quot;[[%s]]&amp;quot;, t.prefixedText )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- catIfDefined()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function createPage( swift, sub, start, ns, script )&lt;br /&gt;
    -- Create button for page creation&lt;br /&gt;
    --     swift   -- string;&lt;br /&gt;
    --                &amp;quot;NoPageCentral&amp;quot;, &amp;quot;NoTalkCentral&amp;quot;, &amp;quot;NoTalkRedir&amp;quot;&lt;br /&gt;
    --     sub     -- string; page name to be created&lt;br /&gt;
    --     start   -- string; defined pageDocRoot argument&lt;br /&gt;
    --     ns      -- number; namespace&lt;br /&gt;
    --     script  -- string; module name (main)&lt;br /&gt;
    -- Return:&lt;br /&gt;
    --     string&lt;br /&gt;
    -- Uses:&lt;br /&gt;
    --     &amp;gt;  LuaModuleDoc.frame&lt;br /&gt;
    --     fetch()&lt;br /&gt;
    -- MediaWiki:Move-leave-redirect   Weiterleitung erstellen&lt;br /&gt;
    -- MediaWiki:autosumm-new          Seite wurde neu angelegt: „$1“&lt;br /&gt;
    local setup = &amp;quot;preload&amp;quot; .. swift:sub( 7 )&lt;br /&gt;
    local r&lt;br /&gt;
    setup = fetch( setup )&lt;br /&gt;
    if setup then&lt;br /&gt;
        local create = { action  = &amp;quot;edit&amp;quot;,&lt;br /&gt;
                         preload = setup,&lt;br /&gt;
                         redlink = &amp;quot;1&amp;quot; }&lt;br /&gt;
        local button, path, show, story, summary&lt;br /&gt;
        if swift == &amp;quot;NoTalkRedir&amp;quot; then&lt;br /&gt;
            show    = &amp;quot;move-leave-redirect&amp;quot;&lt;br /&gt;
            story   = string.format( &amp;quot;%s/%s&amp;quot;, start, script )&lt;br /&gt;
            story   = mw.title.makeTitle( ns, story ).prefixedText&lt;br /&gt;
            story   = string.format( &amp;quot;[[%s]]&amp;quot;, story )&lt;br /&gt;
            summary = &amp;quot;#redirect &amp;quot; .. story&lt;br /&gt;
        else&lt;br /&gt;
            local s = fetch( &amp;quot;langsRequest&amp;quot;, false )&lt;br /&gt;
            show    = &amp;quot;recreate&amp;quot;&lt;br /&gt;
            if s then&lt;br /&gt;
                s = mw.text.trim( s )&lt;br /&gt;
                if s ~= &amp;quot;&amp;quot; then&lt;br /&gt;
                    s = &amp;quot;|&amp;quot; .. s&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            story = ( s or &amp;quot;&amp;quot; )&lt;br /&gt;
            summary = &amp;quot;{{LuaModuleDoc}}&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
    --  summary = mw.message.new( &amp;quot;autosumm-new&amp;quot; ):params( summary )&lt;br /&gt;
        create.summary      = summary&lt;br /&gt;
        create.preloadtitle = summary&lt;br /&gt;
        if story then&lt;br /&gt;
            create[ &amp;quot;preloadparams[]&amp;quot; ] = story&lt;br /&gt;
        end&lt;br /&gt;
        path   = { sub,  mw.uri.buildQueryString( create ) }&lt;br /&gt;
        r      = LuaModuleDoc.frame:callParserFunction( &amp;quot;canonicalurl&amp;quot;,&lt;br /&gt;
                                                        path )&lt;br /&gt;
        show   = mw.message.new( show ):plain()&lt;br /&gt;
        button = mw.title.makeTitle( mw.site.namespaces.Template.id,&lt;br /&gt;
                                     &amp;quot;MediaWiki-Button&amp;quot; )&lt;br /&gt;
        if button.exists then&lt;br /&gt;
            button = { template = button.text,&lt;br /&gt;
                       Typ      = &amp;quot;progressive&amp;quot;,&lt;br /&gt;
                       [&amp;quot;Groß&amp;quot;] = &amp;quot;1&amp;quot;,&lt;br /&gt;
                       Link     = r,&lt;br /&gt;
                       Text     = show }&lt;br /&gt;
            r      = LuaModuleDoc.frame:expandTemplate{&lt;br /&gt;
                                                 title = button.template,&lt;br /&gt;
                                                 args  = button }&lt;br /&gt;
        else&lt;br /&gt;
            r = string.format( &amp;quot;&amp;lt;br&amp;gt;[%s &amp;#039;&amp;#039;&amp;#039;%s&amp;#039;&amp;#039;&amp;#039;]&amp;quot;, r, show )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return r or &amp;quot;&amp;quot;&lt;br /&gt;
end -- createPage()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function globalRepos( script )&lt;br /&gt;
    -- Check for global dissemination&lt;br /&gt;
    --     script  -- string; module name (main)&lt;br /&gt;
    -- Uses:&lt;br /&gt;
    --     &amp;gt;  LuaModuleDoc.title&lt;br /&gt;
    --     &amp;gt;  LuaModuleDoc.frame&lt;br /&gt;
    --     fetch()&lt;br /&gt;
    --     mw.wikibase.getEntity()&lt;br /&gt;
    --     mw.title.makeTitle()&lt;br /&gt;
    -- Return:&lt;br /&gt;
    --     string&lt;br /&gt;
    local entity = mw.wikibase.getEntity()&lt;br /&gt;
    local r&lt;br /&gt;
    if type( entity ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
        local mode = 0&lt;br /&gt;
        local repo = entity:formatPropertyValues( &amp;quot;P1324&amp;quot; )&lt;br /&gt;
        local params, s&lt;br /&gt;
        if type( repo ) == &amp;quot;table&amp;quot;  and&lt;br /&gt;
           type( repo.value ) == &amp;quot;string&amp;quot;  and&lt;br /&gt;
           repo.value:find( &amp;quot;//&amp;quot; ) then&lt;br /&gt;
            local t = mw.text.split( repo.value, &amp;quot;,%s+&amp;quot; )&lt;br /&gt;
            if #t &amp;gt; 1 then&lt;br /&gt;
                for i = 1, #t do&lt;br /&gt;
                    if t[ i ]:find( mw.site.server, 1, true ) then&lt;br /&gt;
                        s = t[ i ]&lt;br /&gt;
                        break -- for i&lt;br /&gt;
                    end&lt;br /&gt;
                end -- for i&lt;br /&gt;
                if not s then&lt;br /&gt;
                    s = t[ 1 ]&lt;br /&gt;
                end&lt;br /&gt;
            else&lt;br /&gt;
                s = repo.value&lt;br /&gt;
            end&lt;br /&gt;
            repo = mw.uri.new( s )&lt;br /&gt;
            if type( repo.path ) == &amp;quot;string&amp;quot;  and&lt;br /&gt;
               repo.path:match( &amp;quot;^/wiki/&amp;quot; ) then&lt;br /&gt;
                local space&lt;br /&gt;
                space, s = repo.path:sub( 7 ):match( &amp;quot;^([^:]+):(.+)$&amp;quot; )&lt;br /&gt;
                if space and&lt;br /&gt;
                   mw.site.namespaces[ space ] then&lt;br /&gt;
                    if s:find( &amp;quot;%%%x%x&amp;quot; ) then&lt;br /&gt;
                        s = mw.uri.decode( s )&lt;br /&gt;
                    end&lt;br /&gt;
                    t = mw.title.makeTitle( space, s )&lt;br /&gt;
                    s = &amp;quot;//&amp;quot; .. repo.host&lt;br /&gt;
                    if t  and&lt;br /&gt;
                       mw.title.equals( LuaModuleDoc.title, t )  and&lt;br /&gt;
                       mw.site.server:find( s, 1, true ) then&lt;br /&gt;
                        mode = 2&lt;br /&gt;
                    else&lt;br /&gt;
                        mode = 1&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            s = fetch( &amp;quot;templateGlobal&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
            if #s &amp;gt; 0 then&lt;br /&gt;
                local l, bib = pcall( require,&lt;br /&gt;
                                      LuaModuleDoc.title.prefixedText )&lt;br /&gt;
                local vsn = entity:formatPropertyValues( &amp;quot;P348&amp;quot; )&lt;br /&gt;
                params = { }&lt;br /&gt;
                if mode &amp;lt; 2 then&lt;br /&gt;
                    params[ 1 ] = string.format( &amp;quot;[%s %s]&amp;quot;,&lt;br /&gt;
                                                 tostring( repo ),&lt;br /&gt;
                                                 repo.host )&lt;br /&gt;
                end&lt;br /&gt;
                if type( vsn ) == &amp;quot;table&amp;quot;  and&lt;br /&gt;
                   type( vsn.value) == &amp;quot;string&amp;quot; and&lt;br /&gt;
                   vsn.value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
                    params.version = vsn.value&lt;br /&gt;
                end&lt;br /&gt;
                if type( bib ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                    local serial&lt;br /&gt;
                    if bib.failsafe then&lt;br /&gt;
                        if type( bib.failsafe ) == &amp;quot;function&amp;quot; then&lt;br /&gt;
                            serial = bib.failsafe( { args = { } } )&lt;br /&gt;
                        else&lt;br /&gt;
                            serial = bib.failsafe&lt;br /&gt;
                        end&lt;br /&gt;
                    elseif bib[ &amp;quot;#serial&amp;quot;] then&lt;br /&gt;
                        serial = bib[ &amp;quot;#serial&amp;quot;]&lt;br /&gt;
                    end&lt;br /&gt;
                    if type( serial ) == &amp;quot;number&amp;quot; then&lt;br /&gt;
                        serial = string.format( &amp;quot;%d&amp;quot;, serial )&lt;br /&gt;
                    end&lt;br /&gt;
                    if type( serial ) == &amp;quot;string&amp;quot; then&lt;br /&gt;
                        params.here = serial&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                if fetch( &amp;quot;forkedGlobal&amp;quot;, &amp;quot;0&amp;quot; ) ~= &amp;quot;1&amp;quot;  and&lt;br /&gt;
                   params.version  and  params.here  and&lt;br /&gt;
                   params.version ~= params.here then&lt;br /&gt;
                    params.update = &amp;quot;1&amp;quot;&lt;br /&gt;
                end&lt;br /&gt;
                r = LuaModuleDoc.frame:expandTemplate{ title=s,&lt;br /&gt;
                                                       args=params }&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        s = fetch( &amp;quot;categoryWikiData&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
        if #s &amp;gt; 0 then&lt;br /&gt;
            local slot&lt;br /&gt;
            if mode &amp;gt; 0 then&lt;br /&gt;
                if mode == 2 then&lt;br /&gt;
                    slot = catIfDefined( &amp;quot;categoryWikiDataParent&amp;quot; )&lt;br /&gt;
                else&lt;br /&gt;
                    slot = catIfDefined( &amp;quot;categoryWikiDataChild&amp;quot; )&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            if not slot then&lt;br /&gt;
                slot = catIfDefined( s )&lt;br /&gt;
            end&lt;br /&gt;
            if slot then&lt;br /&gt;
                if r then&lt;br /&gt;
                    r = r .. slot&lt;br /&gt;
                else&lt;br /&gt;
                    r = slot&lt;br /&gt;
                end&lt;br /&gt;
                if params and params.update then&lt;br /&gt;
                    slot = catIfDefined( &amp;quot;categoryWikiDataReplication&amp;quot; )&lt;br /&gt;
                    if slot then&lt;br /&gt;
                        r = r .. slot&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return r or &amp;quot;&amp;quot;&lt;br /&gt;
end -- globalRepos()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function navDevelop( start, script )&lt;br /&gt;
    -- Most interesting test and development page&lt;br /&gt;
    -- Precondition:&lt;br /&gt;
    --     start   -- string; central documentation root&lt;br /&gt;
    --     script  -- string; basic module name&lt;br /&gt;
    -- Return:&lt;br /&gt;
    --     string or false:  full page name, if any&lt;br /&gt;
    -- Uses:&lt;br /&gt;
    --     &amp;gt;  LuaModuleDoc.nsDocs&lt;br /&gt;
    --     mw.title.makeTitle()&lt;br /&gt;
    local n   = LuaModuleDoc.nsDocs&lt;br /&gt;
    local r   = false&lt;br /&gt;
    local sub = &amp;quot;/&amp;quot; .. fetch( &amp;quot;subTest&amp;quot;, &amp;quot;Test&amp;quot; )&lt;br /&gt;
    local s   = string.format( &amp;quot;%s/%s%s&amp;quot;, start, script, sub )&lt;br /&gt;
    local t   = mw.title.makeTitle( n, s )&lt;br /&gt;
    if not t.exists then&lt;br /&gt;
        local low    = false&lt;br /&gt;
        local subLow = mw.ustring.lower( sub )&lt;br /&gt;
        if subLow ~= sub then&lt;br /&gt;
            s   = string.format( &amp;quot;%s/%s%s&amp;quot;, start, script, subLow )&lt;br /&gt;
            t   = mw.title.makeTitle( n, s )&lt;br /&gt;
            low = t.exists&lt;br /&gt;
        end&lt;br /&gt;
        if not low then&lt;br /&gt;
            n = mw.site.namespaces.Module.id&lt;br /&gt;
            s = string.format( &amp;quot;%s/%s&amp;quot;, script, sub )&lt;br /&gt;
            t = mw.title.makeTitle( n, s )&lt;br /&gt;
            if not t.exists  and  subLow ~= sub then&lt;br /&gt;
                s = script .. subLow&lt;br /&gt;
                t = mw.title.makeTitle( n, s )&lt;br /&gt;
                t = t.exists&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if t then&lt;br /&gt;
        r = string.format( &amp;quot;%s:%s&amp;quot;,&lt;br /&gt;
                           mw.site.namespaces[ n ].name, s )&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- navDevelop()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function navError( say, specific )&lt;br /&gt;
    -- Return error message, evaluate page .pageErr&lt;br /&gt;
    -- Precondition:&lt;br /&gt;
    --     say       -- string; message key&lt;br /&gt;
    --     specific  -- string, optional; additional information&lt;br /&gt;
    -- Uses:&lt;br /&gt;
    --     &amp;gt;  LuaModuleDoc.frame&lt;br /&gt;
    --     fetch()&lt;br /&gt;
    local show = fetch( &amp;quot;pageErr&amp;quot; )&lt;br /&gt;
    local r&lt;br /&gt;
    if type( show ) == &amp;quot;string&amp;quot; then&lt;br /&gt;
        local pars = { say }&lt;br /&gt;
        if type( specific ) == &amp;quot;string&amp;quot; then&lt;br /&gt;
            table.insert( pars, specific )&lt;br /&gt;
        end&lt;br /&gt;
        r = LuaModuleDoc.frame:expandTemplate{ title = show,&lt;br /&gt;
                                               args = pars }&lt;br /&gt;
    else&lt;br /&gt;
        local e = mw.html.create( &amp;quot;span&amp;quot; )&lt;br /&gt;
                         :attr( &amp;quot;class&amp;quot;, &amp;quot;error&amp;quot; )&lt;br /&gt;
                         :wikitext( error( &amp;quot;arg &amp;#039;pageErr&amp;#039; missing&amp;quot;, 3 ) )&lt;br /&gt;
        r = tostring( e )&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- navError()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function navLang( suite, collect, lazy )&lt;br /&gt;
    -- Append languages from string to collection&lt;br /&gt;
    -- Precondition:&lt;br /&gt;
    --     suite    -- string; space separated source&lt;br /&gt;
    --     collect  -- table; to be extended&lt;br /&gt;
    --                 every element: { langCode, lazy }&lt;br /&gt;
    --     lazy     -- true if only existing page is to be linked&lt;br /&gt;
    if type( suite ) == &amp;quot;string&amp;quot; then&lt;br /&gt;
        local raw = mw.text.split( suite, &amp;quot;%s+&amp;quot; )&lt;br /&gt;
        local e, i, j, s&lt;br /&gt;
        for i = 1, #raw do&lt;br /&gt;
            s = raw[ i ]&lt;br /&gt;
            if #s &amp;gt; 1 then&lt;br /&gt;
                for j = 1, #collect do&lt;br /&gt;
                    if s then&lt;br /&gt;
                        e = collect[ j ]&lt;br /&gt;
                        if e[ 1 ] == s then&lt;br /&gt;
                            s = false&lt;br /&gt;
                            if not lazy then&lt;br /&gt;
                                e[ 2 ] = false&lt;br /&gt;
                            end&lt;br /&gt;
                        end&lt;br /&gt;
                    end&lt;br /&gt;
                end -- for j&lt;br /&gt;
                if s then&lt;br /&gt;
                    table.insert( collect,  { s, lazy } )&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end -- for i&lt;br /&gt;
    end&lt;br /&gt;
end -- navLang()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function navLangs( start, script )&lt;br /&gt;
    -- Analyze languages&lt;br /&gt;
    -- Precondition:&lt;br /&gt;
    --     current page is supposed to transclude LuaModuleDoc&lt;br /&gt;
    --     start   -- string; central documentation root&lt;br /&gt;
    --     script  -- string; basic module name&lt;br /&gt;
    -- Postcondition:&lt;br /&gt;
    --     LuaModuleDoc.transl is set up as table:&lt;br /&gt;
    --                         args for navigation template&lt;br /&gt;
    --                         [1] basic module name&lt;br /&gt;
    --                         [2] number of language codes  +  1&lt;br /&gt;
    --                         [3] first language code&lt;br /&gt;
    --                         [4] second language code&lt;br /&gt;
    --                         ... list of further language codes&lt;br /&gt;
    -- Uses:&lt;br /&gt;
    --     &amp;gt;  LuaModuleDoc.nsDocs&lt;br /&gt;
    --      &amp;lt; LuaModuleDoc.transl&lt;br /&gt;
    --     fetch()&lt;br /&gt;
    --     navLang()&lt;br /&gt;
    --     mw.title.makeTitle()&lt;br /&gt;
    local e, i, s, t&lt;br /&gt;
    local specified = fetch( &amp;quot;langsRequest&amp;quot;, false )&lt;br /&gt;
    local super     = start .. &amp;quot;/&amp;quot; .. script .. &amp;quot;/&amp;quot;&lt;br /&gt;
    LuaModuleDoc.transl = { }&lt;br /&gt;
    if type( specified ) == &amp;quot;string&amp;quot; then&lt;br /&gt;
        if specified:match( &amp;quot;^%s*$&amp;quot; ) then&lt;br /&gt;
            specified = false&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    navLang( fetch( &amp;quot;langsDefault&amp;quot; ),  LuaModuleDoc.transl,  specified )&lt;br /&gt;
    navLang( fetch( &amp;quot;langsMore&amp;quot; ),  LuaModuleDoc.transl,  true  )&lt;br /&gt;
    navLang( specified, LuaModuleDoc.transl, false )&lt;br /&gt;
    if #LuaModuleDoc.transl &amp;lt; 1 then&lt;br /&gt;
        LuaModuleDoc.transl = { { &amp;quot;en&amp;quot;, false } }&lt;br /&gt;
    end&lt;br /&gt;
    for i = #LuaModuleDoc.transl, 1, -1 do&lt;br /&gt;
        e = LuaModuleDoc.transl[ i ]&lt;br /&gt;
        s = e[ 1 ]&lt;br /&gt;
        if e[ 2 ] then&lt;br /&gt;
            t = mw.title.makeTitle( LuaModuleDoc.nsDocs,  super .. s )&lt;br /&gt;
            if not t.exists then&lt;br /&gt;
                s = false&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if s then&lt;br /&gt;
            LuaModuleDoc.transl[ i ] = s&lt;br /&gt;
        else&lt;br /&gt;
            table.remove( LuaModuleDoc.transl, i )&lt;br /&gt;
        end&lt;br /&gt;
    end -- for i -1&lt;br /&gt;
    table.insert( LuaModuleDoc.transl,&lt;br /&gt;
                  1,&lt;br /&gt;
                  script )&lt;br /&gt;
    table.insert( LuaModuleDoc.transl,&lt;br /&gt;
                  2,&lt;br /&gt;
                  tostring( #LuaModuleDoc.transl ) )&lt;br /&gt;
end -- navLangs()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function navMerge( start, swift, script, sub, lead )&lt;br /&gt;
    -- Include various external content into page&lt;br /&gt;
    -- Precondition:&lt;br /&gt;
    --     start   -- string; defined pageDocRoot argument&lt;br /&gt;
    --     swift   -- string; defined pageNav argument&lt;br /&gt;
    --     script  -- string; module name (main)&lt;br /&gt;
    --     sub     -- string or false; possible sub-module name&lt;br /&gt;
    --     lead    -- true: Module: namespace;   false: text namespace&lt;br /&gt;
    -- Uses:&lt;br /&gt;
    --     &amp;gt;  LuaModuleDoc.transl&lt;br /&gt;
    --     &amp;gt;  LuaModuleDoc.ns&lt;br /&gt;
    --     &amp;gt;  LuaModuleDoc.nsDocs&lt;br /&gt;
    --     &amp;gt;  LuaModuleDoc.title&lt;br /&gt;
    --     &amp;gt;  LuaModuleDoc.frame&lt;br /&gt;
    --     navError()&lt;br /&gt;
    --     mw.title.makeTitle()&lt;br /&gt;
    --     createPage()&lt;br /&gt;
    --     fetch()&lt;br /&gt;
    local server = mw.site.server&lt;br /&gt;
    local super  = false&lt;br /&gt;
    local t      = navDevelop( start, script )&lt;br /&gt;
    local collect, low, r, s&lt;br /&gt;
    collect = LuaModuleDoc.transl&lt;br /&gt;
    if t then&lt;br /&gt;
        collect.Test = t&lt;br /&gt;
    end&lt;br /&gt;
    if LuaModuleDoc.ns == LuaModuleDoc.nsDocs then&lt;br /&gt;
        s = string.format( &amp;quot;%s/%s&amp;quot;, start, script )&lt;br /&gt;
        if LuaModuleDoc.title.text == s then&lt;br /&gt;
            super = LuaModuleDoc.title.text .. &amp;quot;/&amp;quot;&lt;br /&gt;
        elseif sub then&lt;br /&gt;
            collect.subDoc = sub&lt;br /&gt;
            collect.subModule = sub&lt;br /&gt;
            s = string.format( &amp;quot;%s/%s/%s&amp;quot;, start, script, sub )&lt;br /&gt;
            if LuaModuleDoc.title.text == s then&lt;br /&gt;
                s = string.format( &amp;quot;%s/%s&amp;quot;, s, collect[ 3 ] )&lt;br /&gt;
                t = mw.title.makeTitle( LuaModuleDoc.nsDocs, s )&lt;br /&gt;
                if t.exists then&lt;br /&gt;
                    super = LuaModuleDoc.title.text .. &amp;quot;/&amp;quot;&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    elseif lead and sub then&lt;br /&gt;
        s = string.format( &amp;quot;%s/%s/%s&amp;quot;, start, script, sub )&lt;br /&gt;
        t = mw.title.makeTitle( LuaModuleDoc.nsDocs, s )&lt;br /&gt;
        if t.exists then&lt;br /&gt;
            collect.subDoc = sub&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if server:match( &amp;quot;%.beta%.wmflabs%.org$&amp;quot; ) then&lt;br /&gt;
        local slang, series = server:match( &amp;quot;//(%l+)%.(%l+)%.&amp;quot; )&lt;br /&gt;
        low = true&lt;br /&gt;
        if series == &amp;quot;wikipedia&amp;quot; then&lt;br /&gt;
            if slang == &amp;quot;de&amp;quot; then&lt;br /&gt;
                collect.BETA = &amp;quot;w:de:&amp;quot;   --Talk&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    r = LuaModuleDoc.frame:expandTemplate{ title = swift,&lt;br /&gt;
                                           args = collect }&lt;br /&gt;
    if not low then&lt;br /&gt;
        t = LuaModuleDoc.title.talkPageTitle&lt;br /&gt;
        if LuaModuleDoc.ns == mw.site.namespaces.Module.id then&lt;br /&gt;
            local doc&lt;br /&gt;
            s   = string.format( &amp;quot;%s/%s&amp;quot;, start, script )&lt;br /&gt;
            doc = mw.title.makeTitle( LuaModuleDoc.nsDocs, s )&lt;br /&gt;
            if not doc.exists then&lt;br /&gt;
                r = r .. createPage( &amp;quot;NoPageCentral&amp;quot;,&lt;br /&gt;
                                     doc.prefixedText,&lt;br /&gt;
                                     start,&lt;br /&gt;
                                     LuaModuleDoc.nsDocs,&lt;br /&gt;
                                     script )&lt;br /&gt;
                t = false&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if t  and  not t.exists then&lt;br /&gt;
            if super then&lt;br /&gt;
                s = &amp;quot;NoTalkCentral&amp;quot;&lt;br /&gt;
            elseif LuaModuleDoc.ns == LuaModuleDoc.nsDocs + 1 then&lt;br /&gt;
                s = false&lt;br /&gt;
            else&lt;br /&gt;
                s = &amp;quot;NoTalkRedir&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
            if s then&lt;br /&gt;
                r = string.format( &amp;quot;%s%s%s&amp;quot;,&lt;br /&gt;
                                   r,&lt;br /&gt;
                                   navError( s ),&lt;br /&gt;
                                   createPage( s,&lt;br /&gt;
                                               t.prefixedText,&lt;br /&gt;
                                               start,&lt;br /&gt;
                                               LuaModuleDoc.nsDocs + 1,&lt;br /&gt;
                                               script ) )&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if super then&lt;br /&gt;
        local d  = &amp;quot;{{%s*[lL]uaModuleDoc[^}]*}}%s*&amp;quot;&lt;br /&gt;
        local p1 = &amp;quot;^%s*&amp;quot; .. d .. &amp;quot;&amp;lt;onlyinclude&amp;gt;&amp;quot;&lt;br /&gt;
        local p2 = &amp;quot;%s*&amp;lt;noinclude&amp;gt;&amp;quot; .. d .. &amp;quot;&amp;lt;/noinclude&amp;gt;&amp;quot;&lt;br /&gt;
        local space, sub, support&lt;br /&gt;
        for i = 3, #collect do&lt;br /&gt;
            t = mw.title.makeTitle( LuaModuleDoc.nsDocs,&lt;br /&gt;
                                    super .. collect[ i ] )&lt;br /&gt;
            s = t:getContent()&lt;br /&gt;
            if s then&lt;br /&gt;
                s = s:gsub( p1, &amp;quot;&amp;quot; ):gsub( p2, &amp;quot;&amp;quot; )&lt;br /&gt;
                if s:match( d ) then&lt;br /&gt;
                    r = string.format( &amp;quot;%s&amp;lt;br /&amp;gt;%s&amp;lt;br /&amp;gt;&amp;quot;,&lt;br /&gt;
                                       r,&lt;br /&gt;
                                       navError( &amp;quot;BadInclude&amp;quot;,&lt;br /&gt;
                                                 t.prefixedText ) )&lt;br /&gt;
                else&lt;br /&gt;
                    r = r ..&lt;br /&gt;
                        LuaModuleDoc.frame:expandTemplate{&lt;br /&gt;
                                                 title = t.prefixedText }&lt;br /&gt;
                    break    -- for i&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end -- for i&lt;br /&gt;
        s = fetch( &amp;quot;pageTemplateInsert&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
        space, support = s:match( &amp;quot;^([^:]+):(.+)$&amp;quot; )&lt;br /&gt;
        if space  and  mw.title.makeTitle( space, support ).exists then&lt;br /&gt;
            local suppress = fetch( &amp;quot;noHint&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
            if #suppress == 0 then&lt;br /&gt;
                local swift = collect[ 1 ]&lt;br /&gt;
                if sub then&lt;br /&gt;
                    swift = string.format( &amp;quot;%s/%s&amp;quot;, swift, sub )&lt;br /&gt;
                end&lt;br /&gt;
                r = r ..&lt;br /&gt;
                    LuaModuleDoc.frame:expandTemplate{ title = s,&lt;br /&gt;
                                                       args = { swift } }&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        s = fetch( &amp;quot;categoryDocs&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
        if #s &amp;gt; 0 then&lt;br /&gt;
            t = mw.title.makeTitle( &amp;quot;Category&amp;quot;, s )&lt;br /&gt;
            if t.exists then&lt;br /&gt;
                r = string.format( &amp;quot;%s[[%s|%s]]&amp;quot;,&lt;br /&gt;
                                   r, t.prefixedText, collect[ 1 ] )&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        r = r .. &amp;quot;__NOEDITSECTION__&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    if lead then&lt;br /&gt;
        r = r .. globalRepos( script )&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- navMerge()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function navPage( lead )&lt;br /&gt;
    -- Return navigation text; analyze page location&lt;br /&gt;
    -- Precondition:&lt;br /&gt;
    --     current namespace will support LuaModuleDoc&lt;br /&gt;
    --     lead    -- true: Module: namespace;   false: text namespace&lt;br /&gt;
    -- Uses:&lt;br /&gt;
    --     &amp;gt;  LuaModuleDoc.title&lt;br /&gt;
    --     &amp;gt;  LuaModuleDoc.transl&lt;br /&gt;
    --     fetch()&lt;br /&gt;
    --     navLangs()&lt;br /&gt;
    --     navMerge()&lt;br /&gt;
    --     navError()&lt;br /&gt;
    local r&lt;br /&gt;
    local start = fetch( &amp;quot;pageDocRoot&amp;quot; )&lt;br /&gt;
    if type( start ) == &amp;quot;string&amp;quot; then&lt;br /&gt;
        local s      = &amp;quot;^&amp;quot;&lt;br /&gt;
        local script&lt;br /&gt;
        if not lead then&lt;br /&gt;
            s = &amp;quot;^&amp;quot; .. start .. &amp;quot;/&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        s = s .. &amp;quot;([^/]+)/(.*/?)$&amp;quot;&lt;br /&gt;
        script, s = string.match( LuaModuleDoc.title.text .. &amp;quot;/&amp;quot;,  s )&lt;br /&gt;
        if type( script ) == &amp;quot;string&amp;quot; then&lt;br /&gt;
            local sub   = false&lt;br /&gt;
            local swift = fetch( &amp;quot;pageNav&amp;quot; )&lt;br /&gt;
            navLangs( start, script )&lt;br /&gt;
            if type( s ) == &amp;quot;string&amp;quot; then&lt;br /&gt;
                if #s &amp;gt; 1 then&lt;br /&gt;
                    local q&lt;br /&gt;
                    s = s:match( &amp;quot;^([^/]+)/.*/?$&amp;quot; )&lt;br /&gt;
                    q = mw.title.makeTitle( &amp;quot;Module&amp;quot;,&lt;br /&gt;
                                            script .. &amp;quot;/&amp;quot; .. s )&lt;br /&gt;
                    if q.exists and q.contentModel == &amp;quot;Scribunto&amp;quot; then&lt;br /&gt;
                        sub = s&lt;br /&gt;
                        for i = 1, #LuaModuleDoc.transl do&lt;br /&gt;
                            if LuaModuleDoc.transl[ i ] == s then&lt;br /&gt;
                                sub = false&lt;br /&gt;
                                break    -- for i&lt;br /&gt;
                            end&lt;br /&gt;
                        end -- for i&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            if type( swift ) == &amp;quot;string&amp;quot; then&lt;br /&gt;
                r = navMerge( start,&lt;br /&gt;
                              swift,&lt;br /&gt;
                              script,&lt;br /&gt;
                              sub,&lt;br /&gt;
                              lead )&lt;br /&gt;
            else&lt;br /&gt;
                r = navError( &amp;quot;configMissing&amp;quot;, &amp;quot;pageNav&amp;quot; )&lt;br /&gt;
            end&lt;br /&gt;
        else&lt;br /&gt;
            r = navError( &amp;quot;BadPage&amp;quot; ) .. LuaModuleDoc.title.text&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        r = navError( &amp;quot;configMissing&amp;quot;, &amp;quot;pageDocRoot&amp;quot; )&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- navPage()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function navigation()&lt;br /&gt;
    -- Start execution; return navigation text; analyze namespace&lt;br /&gt;
    -- Uses:&lt;br /&gt;
    --      &amp;lt; LuaModuleDoc.title&lt;br /&gt;
    --      &amp;lt; LuaModuleDoc.ns&lt;br /&gt;
    --      &amp;lt; LuaModuleDoc.nsDocs&lt;br /&gt;
    --     fetch()&lt;br /&gt;
    --     mw.title.getCurrentTitle()&lt;br /&gt;
    --     navPage()&lt;br /&gt;
    --     navError()&lt;br /&gt;
    local r&lt;br /&gt;
    local nsDocs = fetch( &amp;quot;nsDocs&amp;quot; )&lt;br /&gt;
    if nsDocs then&lt;br /&gt;
        local lead&lt;br /&gt;
        LuaModuleDoc.title  = mw.title.getCurrentTitle()&lt;br /&gt;
        LuaModuleDoc.ns     = LuaModuleDoc.title.namespace&lt;br /&gt;
        lead                = ( LuaModuleDoc.ns ==&lt;br /&gt;
                                mw.site.namespaces.Module.id )&lt;br /&gt;
        LuaModuleDoc.nsDocs = tonumber( nsDocs )&lt;br /&gt;
        if lead  or&lt;br /&gt;
           LuaModuleDoc.ns == LuaModuleDoc.nsDocs  or&lt;br /&gt;
           LuaModuleDoc.ns == LuaModuleDoc.nsDocs + 1 then&lt;br /&gt;
            r = navPage( lead )&lt;br /&gt;
        else&lt;br /&gt;
            r = navError( &amp;quot;BadNamespace&amp;quot; )&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        r = navError( &amp;quot;configMissing&amp;quot;, &amp;quot;nsDocs&amp;quot; )&lt;br /&gt;
    end&lt;br /&gt;
    return  r&lt;br /&gt;
end -- navigation()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Failsafe.failsafe = function ( atleast )&lt;br /&gt;
    -- Retrieve versioning and check for compliance&lt;br /&gt;
    -- Precondition:&lt;br /&gt;
    --     atleast  -- string, with required version&lt;br /&gt;
    --                         or wikidata|item|~|@ or false&lt;br /&gt;
    -- Postcondition:&lt;br /&gt;
    --     Returns  string  -- with queried version/item, also if problem&lt;br /&gt;
    --              false   -- if appropriate&lt;br /&gt;
    -- 2024-03-01&lt;br /&gt;
    local since  = atleast&lt;br /&gt;
    local last   = ( since == &amp;quot;~&amp;quot; )&lt;br /&gt;
    local linked = ( since == &amp;quot;@&amp;quot; )&lt;br /&gt;
    local link   = ( since == &amp;quot;item&amp;quot; )&lt;br /&gt;
    local r&lt;br /&gt;
    if last  or  link  or  linked  or  since == &amp;quot;wikidata&amp;quot; then&lt;br /&gt;
        local item = Failsafe.item&lt;br /&gt;
        since = false&lt;br /&gt;
        if type( item ) == &amp;quot;number&amp;quot;  and  item &amp;gt; 0 then&lt;br /&gt;
            local suited = string.format( &amp;quot;Q%d&amp;quot;, item )&lt;br /&gt;
            if link then&lt;br /&gt;
                r = suited&lt;br /&gt;
            else&lt;br /&gt;
                local entity = mw.wikibase.getEntity( suited )&lt;br /&gt;
                if type( entity ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                    local seek = Failsafe.serialProperty or &amp;quot;P348&amp;quot;&lt;br /&gt;
                    local vsn  = entity:formatPropertyValues( seek )&lt;br /&gt;
                    if type( vsn ) == &amp;quot;table&amp;quot;  and&lt;br /&gt;
                       type( vsn.value ) == &amp;quot;string&amp;quot;  and&lt;br /&gt;
                       vsn.value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
                        if last  and  vsn.value == Failsafe.serial then&lt;br /&gt;
                            r = false&lt;br /&gt;
                        elseif linked then&lt;br /&gt;
                            if mw.title.getCurrentTitle().prefixedText&lt;br /&gt;
                               ==  mw.wikibase.getSitelink( suited ) then&lt;br /&gt;
                                r = false&lt;br /&gt;
                            else&lt;br /&gt;
                                r = suited&lt;br /&gt;
                            end&lt;br /&gt;
                        else&lt;br /&gt;
                            r = vsn.value&lt;br /&gt;
                        end&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        elseif link then&lt;br /&gt;
            r = false&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if type( r ) == &amp;quot;nil&amp;quot; then&lt;br /&gt;
        if not since  or  since &amp;lt;= Failsafe.serial then&lt;br /&gt;
            r = Failsafe.serial&lt;br /&gt;
        else&lt;br /&gt;
            r = false&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- Failsafe.failsafe()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Provide template access&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.nav( frame )&lt;br /&gt;
    -- Uses:&lt;br /&gt;
    --      &amp;lt; LuaModuleDoc.frame&lt;br /&gt;
    --     navigation()&lt;br /&gt;
    local lucky, r&lt;br /&gt;
    LuaModuleDoc.frame = frame&lt;br /&gt;
    lucky, r = pcall( navigation )&lt;br /&gt;
    if not lucky then&lt;br /&gt;
        local e = mw.html.create( &amp;quot;span&amp;quot; )&lt;br /&gt;
                         :attr( &amp;quot;class&amp;quot;, &amp;quot;error&amp;quot; )&lt;br /&gt;
                         :wikitext( r )&lt;br /&gt;
        r = tostring( e )&lt;br /&gt;
    end&lt;br /&gt;
    return r or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.failsafe = function ( frame )&lt;br /&gt;
    -- Check or retrieve version information&lt;br /&gt;
    -- Precondition:&lt;br /&gt;
    --     frame  -- object; #invoke environment&lt;br /&gt;
    -- Postcondition:&lt;br /&gt;
    --     Return string with error message or &amp;quot;&amp;quot;&lt;br /&gt;
    -- Uses:&lt;br /&gt;
    --     LuaModuleDoc.failsafe()&lt;br /&gt;
    local s = type( frame )&lt;br /&gt;
    local since&lt;br /&gt;
    if s == &amp;quot;table&amp;quot; then&lt;br /&gt;
        since = frame.args[ 1 ]&lt;br /&gt;
    elseif s == &amp;quot;string&amp;quot; then&lt;br /&gt;
        since = frame&lt;br /&gt;
    end&lt;br /&gt;
    if since then&lt;br /&gt;
        since = mw.text.trim( since )&lt;br /&gt;
        if since == &amp;quot;&amp;quot; then&lt;br /&gt;
            since = false&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return Failsafe.failsafe( since )  or  &amp;quot;&amp;quot;&lt;br /&gt;
end -- p.failsafe()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
setmetatable( p,  { __call = function ( func, ... )&lt;br /&gt;
                                 setmetatable( p, nil )&lt;br /&gt;
                                 return Failsafe&lt;br /&gt;
                             end } )&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>