Zum Inhalt springen

„Modul:Text/test“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
2015-05-22
 
2017-10-01
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
--[=[ 2015-05-22
--[=[ 2017-10-01
Module:Text test
Module:Text test
]=]
]=]
Zeile 9: Zeile 9:
local QuoteLang = false
local QuoteLang = false
local QuoteType = false
local QuoteType = false



local function fault( a )
-- Formatiere Fehler mit class=error
-- Parameter:
-- a -- string mit Text
return string.format( "<span class=\"error\">%s</span>", a )
end -- fault()






Handler.quoteTable = function ( args, frame )
Handler.quoteTable = function ( args, frame )
local r = Text.test( "quote" )
local longer = ( args.QuoteType == "1" )
local slang = mw.language.getContentLanguage():getCode()
local order = { }
local strip = [==[
local r = Text.test( "quote" )
local strip = [==[
|-
|-
| <code>%%s</code>
| {{#language:%%s|%s}} || <code>{{#invoke:Text|quoteUnquoted|1|%%s|1}}</code> || <code>{{#invoke:Text|quoteUnquoted|2|%%s|2}}</code> || <code>%%s</code>
| {{#language:%%s|%s}}
|class="hintergrundfarbe8"| <code>{{#invoke:Text|quoteUnquoted|1|%%s|1}}</code>
|class="hintergrundfarbe8"| <code>{{#invoke:Text|quoteUnquoted|2|%%s|2}}</code>
]==]
]==]
local s, v1, v2
local s, slang, slot, v1, v2
QuoteLang = r.QuoteLang
QuoteLang = r.QuoteLang
QuoteType = r.QuoteType
QuoteType = r.QuoteType
Zeile 25: Zeile 38:
{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
! lang !! 1 !! 2 !! code
! lang !! Name !! 1 !! 2
]==]
]==]
strip = string.format( strip, slang )
if not frame then
if not frame then
frame = mw.getCurrentFrame()
frame = mw.getCurrentFrame()
end
end
if longer then
r = r .. "! code\n"
strip = strip .. "| <code>%%s</code>\n"
end
slang = frame:preprocess( "{{int:lang}}" )
strip = string.format( strip, slang )
for k, v in pairs( QuoteLang ) do
for k, v in pairs( QuoteLang ) do
if type( v ) == "string" then
table.insert( order, k )
s = string.format( strip, k, k, k, v )
end -- for k, v in QuoteLang
table.sort( order )
for k, v in pairs( order ) do
slot = QuoteLang[ v ]
if type( slot ) == "string" then
v1, v2 = v:match( "^(%l+)%-(%l+)$" )
if v1 then
if #v2 == 2 then
v2 = v2:upper()
else
v2 = v2:sub( 1, 1 ):upper() .. v2:sub( 2 )
end
s = string.format( "%s-%s", v1, v2 )
else
s = v
end
if longer then
s = string.format( strip, s, v, v, v, slot )
else
s = string.format( strip, s, v, v, v )
end
r = r .. frame:preprocess( s )
r = r .. frame:preprocess( s )
else
else
r = r .. "\n|-\n!" .. k
r = r .. "\n|-\n!" .. tostring( k )
end
end
end
end -- for k, v in order
r = r .. [==[
r = r .. "\n|}"
if longer then
|}
r = r .. [==[


{| class="wikitable sortable"
{| class="wikitable sortable"
! code !!colspan="3"| 1 !!colspan="3"| 2
! code !!colspan="3"| 1 !!colspan="3"| 2
]==]
]==]
for k, v in pairs( QuoteType ) do
for k, v in pairs( QuoteType ) do
if type( v ) == "table" then
if type( v ) == "table" then
v1 = v[ 1 ]
v1 = v[ 1 ]
v2 = v[ 2 ]
v2 = v[ 2 ]
if type( v1 ) == "table" then
if type( v1 ) == "table" then
s = string.format( "%s1%s||%d||%d",
s = string.format( "%s1%s||%d||%d",
mw.ustring.char( v1[ 1 ] ),
mw.ustring.char( v1[ 1 ] ),
mw.ustring.char( v1[ 2 ] ),
mw.ustring.char( v1[ 2 ] ),
v1[ 1 ],
v1[ 1 ],
v1[ 2 ] )
v1[ 2 ] )
else
s = "???"
end
s = s .. "||"
if type( v2 ) == "table" then
s = string.format( "%s%s2%s||%d||%d",
s,
mw.ustring.char( v2[ 1 ] ),
mw.ustring.char( v2[ 2 ] ),
v2[ 1 ],
v2[ 2 ] )
else
s = s .. "???"
end
else
else
s = "???"
s = "??????????"
end
end
s = s .. "||"
r = string.format( "%s\n|-\n|<code>%s</code>||%s", r, k, s )
if type( v2 ) == "table" then
end -- for k, v in QuoteType
s = string.format( "%s%s2%s||%d||%d",
r = r .. "\n|}"
s,
mw.ustring.char( v2[ 1 ] ),
mw.ustring.char( v2[ 2 ] ),
v2[ 1 ],
v2[ 2 ] )
else
s = s .. "???"
end
else
s = "??????????"
end
r = string.format( "%s\n|-\n|<code>%s</code>||%s", r, k, s )
end
end
r = r .. "\n|}"
return r
return r
end -- Handler.quoteTable()
end -- Handler.quoteTable()
Zeile 97: Zeile 137:
r = Handler[ suite ]( frame.args, frame )
r = Handler[ suite ]( frame.args, frame )
else
else
r = "<span class='error'>Unkown Handler: "
r = fault( "Unkown Handler: " .. suite )
.. suite .. "</span>"
end
end
else
else
r = "<span class='error'>" .. Text .. "</span>"
r = fault( Text )
end
end
return r
return r

Aktuelle Version vom 9. Oktober 2017, 15:26 Uhr

Vorlagenprogrammierung Diskussionen Lua Test Unterseiten
Modul Deutsch English

Modul: Dokumentation

Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus


--[=[ 2017-10-01
Module:Text test
]=]



local Handler   = { }
local Text      = { }
local QuoteLang = false
local QuoteType = false



local function fault( a )
    -- Formatiere Fehler mit class=error
    -- Parameter:
    --     a  -- string mit Text
    return string.format( "<span class=\"error\">%s</span>", a )
end -- fault()



Handler.quoteTable = function ( args, frame )
    local longer = ( args.QuoteType == "1" )
    local order  = { }
    local r      = Text.test( "quote" )
    local strip  = [==[
|-
| <code>%%s</code>
| {{#language:%%s|%s}}
|class="hintergrundfarbe8"| <code>{{#invoke:Text|quoteUnquoted|1|%%s|1}}</code>
|class="hintergrundfarbe8"| <code>{{#invoke:Text|quoteUnquoted|2|%%s|2}}</code>
]==]
    local s, slang, slot, v1, v2
    QuoteLang = r.QuoteLang
    QuoteType = r.QuoteType
    r         = [==[
{| class="wikitable sortable"
|-
! lang !! Name !! 1 !! 2
]==]
    if not frame then
        frame = mw.getCurrentFrame()
    end
    if longer then
        r     = r .. "! code\n"
        strip = strip .. "| <code>%%s</code>\n"
    end
    slang = frame:preprocess( "{{int:lang}}" )
    strip = string.format( strip, slang )
    for k, v in pairs( QuoteLang ) do
        table.insert( order, k )
    end    -- for k, v in QuoteLang
    table.sort( order )
    for k, v in pairs( order ) do
        slot = QuoteLang[ v ]
        if type( slot ) == "string" then
            v1, v2 = v:match( "^(%l+)%-(%l+)$" )
            if v1 then
                if #v2 == 2 then
                    v2 = v2:upper()
                else
                    v2 = v2:sub( 1, 1 ):upper() .. v2:sub( 2 )
                end
                s = string.format( "%s-%s", v1, v2 )
            else
                s = v
            end
            if longer then
                s = string.format( strip, s, v, v, v, slot )
            else
                s = string.format( strip, s, v, v, v )
            end
            r = r .. frame:preprocess( s )
        else
            r = r .. "\n|-\n!" .. tostring( k )
        end
    end    -- for k, v in order
    r = r .. "\n|}"
    if longer then
        r = r .. [==[

{| class="wikitable sortable"
! code !!colspan="3"| 1 !!colspan="3"| 2
]==]
        for k, v in pairs( QuoteType ) do
            if type( v ) == "table" then
                v1 = v[ 1 ]
                v2 = v[ 2 ]
                if type( v1 ) == "table" then
                    s = string.format( "%s1%s||%d||%d",
                                       mw.ustring.char( v1[ 1 ] ),
                                       mw.ustring.char( v1[ 2 ] ),
                                       v1[ 1 ],
                                       v1[ 2 ] )
                else
                    s = "???"
                end
                s = s .. "||"
                if type( v2 ) == "table" then
                    s = string.format( "%s%s2%s||%d||%d",
                                       s,
                                       mw.ustring.char( v2[ 1 ] ),
                                       mw.ustring.char( v2[ 2 ] ),
                                       v2[ 1 ],
                                       v2[ 2 ] )
                else
                    s = s .. "???"
                end
            else
                s = "??????????"
            end
            r = string.format( "%s\n|-\n|<code>%s</code>||%s", r, k, s )
        end    -- for k, v in QuoteType
        r = r .. "\n|}"
    end
    return r
end -- Handler.quoteTable()



-- Export
local p = { }

function p.test( frame )
    local lucky, r
    lucky, Text = pcall( require, "Module:Text" )
    if type( Text ) == "table" then
        local suite
        if type( frame ) == "string" then
            suite = frame
        else
            suite = frame.args[ 1 ]
        end
        Text = Text.Text()
        if type( Handler[ suite ] ) == "function" then
            r = Handler[ suite ]( frame.args, frame )
        else
            r = fault( "Unkown Handler: " .. suite )
        end
    else
        r = fault( Text )
    end
    return r
end -- p.test()

return p