Modul:Vorlage:Begriffsklärung

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Die Dokumentation für dieses Modul kann unter Modul:Vorlage:Begriffsklärung/Doku erstellt werden

--[=[ 2013-05-27
Vorlage:Begriffsklärung
]=]



local Untervorlage = "Vorlage:Begriffsklärung/Kopf"



local function main( params, frame )
    local seite = mw.title.getCurrentTitle()
    local ns    = seite.namespace
    local args  = { Lemma = seite.text }
    local k, v
    for k, v in pairs( params ) do
        args[ k ] = v
    end -- for k, v
    if ns == 0 then
        local score = "{{%s*[bB]egriffsklärung%s*[^}]*}}"
        local scan
        local story
        if seite.exists then
            story = seite:getContent():gsub( "<!--[^>]*-->", "" )
        else    -- Seite wird erstellt
            story = "{{Begriffsklärung}}"
        end
        if mw.ustring.find( story, score ) then
            if not args.KlammerImTitel then
                local s, k = args.Lemma:match( "^(.+) %((.+)%)$" )
                if k then
                    args.Lemma = s
                    if k ~= "Begriffsklärung" then
                        if k == "BKL"  or
                           k == "BKS"  or
                           k == "Begriffserklärung" then
                            args.Fehler = "(BKL)"
                        else
                            args.Fehler = "Klammerlemma"
                        end
                    end
                end
            end
            if not args.Fehler then
                local abk  = "^[A-ZÄÖÜ]+[0-9]*$"
                local s
                local lead
                local lean = false
                local last = false
                if mw.ustring.match( args.Lemma, abk ) then
                    args.Abk = "1"
                end
                scan    = "^(%s*" .. score .. ")(.*)$"
                story   = story:gsub( "</?onlyinclude>", "" )
                lead, s = mw.ustring.match( story, scan )
                if s then
                    story = s
                    scan  = "^ *[\n]? *\n%*"
                    if mw.ustring.find( story, scan ) then
                        lean = true
                    end
                end
                scan = score .. "%s*(.*)$"
                s    = mw.ustring.match( story, scan )
                if s then
                    s = s:gsub( "%[%[%s*[Kk]ategorie:[^%]]+%]%]", "" )
                         :gsub( "%[%[[a-z][a-z][a-z]?:[^%]]+%]%]", "" )
                    if s:find( "%S" ) then
                        args.Fehler = "Position"
                    end
                    last = true
                end
                if lead and not args.Fehler then
                    if lean then
                        args.tmp201306 = "1"
                    end
                    if last then
                        args.Doppelt = "1"
                    end
                end
            end
        else
            args.Fehler = "Einbindung"
        end
    elseif ns % 2 == 0  and  ns ~= 2  and  ns ~= 10 then
        args.Fehler = "Namensraum"
    end
    return frame:expandTemplate{ title = Untervorlage, args = args }
end -- main()



-- Export
local p = {}

function p.test( a )
    local lucky, r = pcall( main, a, mw.getCurrentFrame() )
    return r
end

function p.f( frame )
    local lucky, r = pcall( main, frame:getParent().args, frame )
    return r
end

return p