Zum Inhalt springen

Modul:TemplateData: Unterschied zwischen den Versionen

2018-02-11
w>PerfektesChaos
(2018-02-10T1845)
w>PerfektesChaos
(2018-02-11)
Zeile 1: Zeile 1:
local TemplateData = { suite  = "TemplateData",
local TemplateData = { suite  = "TemplateData",
                       serial = "2018-02-10T1845",
                       serial = "2018-02-11",
                       item  = 46997995 }
                       item  = 46997995 }
--[=[
--[=[
Zeile 62: Zeile 62:
}
}
local Permit = {
local Permit = {
    builder = { align      = "block",
                block      = "block",
                compressed = "block",
                dense      = "block",
                grouped    = "inline",
                half      = "inline",
                indent    = "block",
                inline    = "inline",
                last      = "block",
                lead      = "block",
                newlines  = "block",
                spaced    = "inline" },
     colors  = { tableheadbg = "B3B7FF",
     colors  = { tableheadbg = "B3B7FF",
                 required    = "EAF3FF",
                 required    = "EAF3FF",
Zeile 1.060: Zeile 1.072:


local function format()
local function format()
    -- Build formatted element
    -- Returns <inline>
    local source = Data.tree.format:lower()
    local r, s
    if source == "inline"  or  source == "block" then
        r = mw.html.create( "i" )
                  :wikitext( source )
    else
        local code
        if source:find( "|", 1, true ) then
            local scan = "^[\n ]*%{%{[\n _]*|[\n _]*=[\n _]*%}%}[\n ]*$"
            if source:match( scan, 1, true ) then
                code = source
            else
                source = mw.text.nowiki( source ):gsub( "\n", "&#92;n" )
                s      = tostring( mw.html.create( "code" )
                                          :wikitext( source ) )
                Fault( "Invalid format " .. s )
                source = false
            end
        else
            local words = mw.text.split( source, "%s+" )
            local show, start, unknown
            for i = 1, #words do
                s = words[ i ]
                if i == 1 then
                    start = s
                end
                if Permit.builder[ s ] == start then
                    Permit.builder[ s ] = true
                else
                    if unknown then
                        unknown = string.format( "%s %s", unknown, s )
                    else
                        unknown = s
                    end
                end
            end -- i = 1, #words
            if unknown then
                s = tostring( mw.html.create( "code" )
                                    :css( "white-space", "nowrap" )
                                    :wikitext( s ) )
                Fault( "Unknown/misplaced format keyword " .. s )
                source = false
                start  = false
            end
            if start == "inline" then
                if Permit.builder.half == true then
                    show = "inline half"
                    code = "{{_ |_=_}}"
                elseif Permit.builder.grouped == true then
                    show = "inline grouped"
                    code = "{{_ | _=_ }}"
                elseif Permit.builder.spaced == true then
                    show = "inline spaced"
                    code = "{{_ | _ = _ }}"
                end
            elseif start == "block" then
                local space  = " "    -- amid "|" and name
                local spaced = " "    -- preceding "="
                local spacer = " "    -- following "="
                local suffix = "N"    -- closing "}}" on new line
                show = "block"
                if Permit.builder.indent == true then
                    start = " "
                    show = "block indent"
                else
                    start = ""
                end
                if Permit.builder.compressed == true then
                    space  = ""
                    spaced = ""
                    spacer = ""
                    show  = show .. " compressed"
                    if Permit.builder.last == true then
                        show = show .. " last"
                    else
                        suffix = ""
                    end
                else
                    if Permit.builder.lead == true then
                        show = show .. " lead"
                    else
                        space = ""
                    end
                    if Permit.builder.align == true then
                        if type( Data.got ) == "table"  and
                          type( Data.got.params ) == "table" then
                            local n = 0
                            for k, v in pairs( Data.got.params ) do
                                if type( v ) == "table"  and
                                  v.deprecated  and
                                  type( k ) == "string"  and
                                  #k > n then
                                    n = #k
                                end
                            end -- for k, v
                            if n > 1 then
                                spaced = string.rep( "_", n ) .. " "
                            end
                        end
                        show = show .. " align"
                    elseif Permit.builder.dense == true then
                        spaced = ""
                        spacer = ""
                        show  = show .. " dense"
                    end
                end
                if Permit.builder.last == true then
                    suffix = spacer
                    show  = show .. " last"
                end
                code = string.format( "N{{_N%s|%s_%s=%s_%s}}N",
                                      start,
                                      space,
                                      spaced,
                                      spacer,
                                      suffix )
            end
            if show then
                r = mw.html.create( "span" )
                          :wikitext( show )
            end
        end
        if code then
            source = code:gsub( "N", "\n" )
            code  = mw.text.nowiki( code ):gsub( "N", "&#92;n" )
            code  = mw.html.create( "code" )
                            :wikitext( code )
            if r then
                r = mw.html.create( "span" )
                          :node( r )
                          :node( code )
            else
                r = code
            end
        end
    end
    Data.tree.format = source
    return r
end -- format()
local function formatter()
     -- Build presented documentation
     -- Build presented documentation
     -- Returns <div>
     -- Returns <div>
Zeile 1.088: Zeile 1.245:
     end
     end
     if Data.tree and Data.tree.format then
     if Data.tree and Data.tree.format then
         local e, show, style
         local e = format()
        s = Data.tree.format:lower( Data.tree.format )
         if e then
         if s == "inline"  or  s == "block" then
            local show = "Format"
            style = "i"
            if Config.supportFormat then
        else
                show = string.format( "[[%s|%s]]",
             s    = mw.text.encode( s ):gsub( "\n", "&#92;n" )
                                      Config.supportFormat, show )
            style = "code"
            end
            --  TODO  Validate
             r:node( mw.html.create( "p" )
                          :wikitext( show .. ": " )
                          :node( e ) )
         end
         end
mw.log(s)
        show = "Format"
        if Config.supportFormat then
            show = string.format( "[[%s|%s]]",
                                  Config.supportFormat, show )
        end
        r:node( mw.html.create( "p" )
                      :wikitext( show .. ": " )
                      :node( mw.html.create( style )
                                    :wikitext( s ) ) )
     end
     end
     return r
     return r
end -- format()
end -- formatter()




Zeile 1.136: Zeile 1.285:
         end
         end
     end
     end
     Data.div:node( format() )
     Data.div:node( formatter() )
     if not Data.lazy then
     if not Data.lazy then
         Data.slim = flush()
         Data.slim = flush()
Anonymer Benutzer