Nicht angemeldeter Benutzer - Bearbeiten von Seiten ist nur als angemeldeter Benutzer möglich.

Änderungen

Zur Navigation springen Zur Suche springen
2.166 Bytes hinzugefügt ,  16:47, 28. Okt. 2019
2019-10-27
Zeile 1: Zeile 1:  
local Sort = { suite  = "Sort",
 
local Sort = { suite  = "Sort",
               serial = "2018-03-22",
+
               serial = "2019-10-27",
 
               item  = 24205172 }
 
               item  = 24205172 }
 
--[=[
 
--[=[
 
Sort
 
Sort
 
]=]
 
]=]
 +
local Failsafe  = Sort
 +
local GlobalMod = Sort
    +
 +
 +
local foreignModule = function ( access, advanced, append, alt, alert )
 +
    -- Fetch global module
 +
    -- Precondition:
 +
    --    access    -- string, with name of base module
 +
    --    advanced  -- true, for require(); else mw.loadData()
 +
    --    append    -- string, with subpage part, if any; or false
 +
    --    alt      -- number, of wikidata item of root; or false
 +
    --    alert    -- true, for throwing error on data problem
 +
    -- Postcondition:
 +
    --    Returns whatever, probably table
 +
    -- 2019-10-20
 +
    local storage = access
 +
    local fun, lucky, r
 +
    if advanced then
 +
        fun = require
 +
    else
 +
        fun = mw.loadData
 +
    end
 +
    if append then
 +
        storage = string.format( "%s/%s", storage, append )
 +
    end
 +
    lucky, r = pcall( fun,  "Module:" .. storage )
 +
    if not lucky then
 +
        local suited
 +
        GlobalMod.globalModules = GlobalMod.globalModules or { }
 +
        suited = GlobalMod.globalModules[ access ]
 +
        if not suited  and
 +
          type( alt ) == "number"  and
 +
          alt > 0 then
 +
            suited = string.format( "Q%d", alt )
 +
            suited = mw.wikibase.getSitelink( suited )
 +
            GlobalMod.globalModules[ access ] = suited or true
 +
        end
 +
        if type( suited ) == "string" then
 +
            storage = suited
 +
            if append then
 +
                storage = string.format( "%s/%s", storage, append )
 +
            end
 +
            lucky, r = pcall( fun, storage )
 +
        end
 +
        if not lucky and alert then
 +
            error( "Missing or invalid page: " .. storage, 0 )
 +
        end
 +
    end
 +
    return r
 +
end -- foreignModule()
      Zeile 20: Zeile 70:  
     if adapt  or  not r:match( "^[ -~]*$" ) then
 
     if adapt  or  not r:match( "^[ -~]*$" ) then
 
         local storage = string.format( "Module:%s/", Sort.suite )
 
         local storage = string.format( "Module:%s/", Sort.suite )
         local collate, lucky, post, pre
+
         local collate, post, pre
 
         if apply then
 
         if apply then
 
             collate = apply
 
             collate = apply
Zeile 27: Zeile 77:  
         end
 
         end
 
         if type( collate ) == "string" then
 
         if type( collate ) == "string" then
             lucky, collate = pcall( mw.loadData, storage .. collate )
+
             collate = foreignModule( Sort.suite,
 +
                                    false,
 +
                                    collate,
 +
                                    Sort.item )
 
         end
 
         end
 
         if adapt  and  type( collate ) == "table" then
 
         if adapt  and  type( collate ) == "table" then
Zeile 274: Zeile 327:       −
Sort.failsafe = function ( assert )
+
Failsafe.failsafe = function ( atleast )
 
     -- Retrieve versioning and check for compliance
 
     -- Retrieve versioning and check for compliance
 
     -- Precondition:
 
     -- Precondition:
     --    assert -- string, with required version or "wikidata",
+
     --    atleast -- string, with required version or "wikidata" or "~"
     --               or false
+
     --                 or false
 
     -- Postcondition:
 
     -- Postcondition:
     --    Returns  string with appropriate version, or false
+
     --    Returns  string -- with queried version, also if problem
     local since = assert
+
    --              false   -- if appropriate
 +
    -- 2019-10-15
 +
    local last  = ( atleast == "~" )
 +
     local since = atleast
 
     local r
 
     local r
     if since == "wikidata" then
+
     if last  or  since == "wikidata" then
         local item = Sort.item
+
         local item = Failsafe.item
 
         since = false
 
         since = false
 
         if type( item ) == "number"  and  item > 0 then
 
         if type( item ) == "number"  and  item > 0 then
Zeile 290: Zeile 346:  
                                                                 item ) )
 
                                                                 item ) )
 
             if type( entity ) == "table" then
 
             if type( entity ) == "table" then
                 local vsn = entity:formatPropertyValues( "P348" )
+
                local seek = Failsafe.serialProperty or "P348"
 +
                 local vsn = entity:formatPropertyValues( seek )
 
                 if type( vsn ) == "table"  and
 
                 if type( vsn ) == "table"  and
                   type( vsn.value) == "string" and
+
                   type( vsn.value ) == "string" and
 
                   vsn.value ~= "" then
 
                   vsn.value ~= "" then
                     r = vsn.value
+
                     if last  and  vsn.value == Failsafe.serial then
 +
                        r = false
 +
                    else
 +
                        r = vsn.value
 +
                    end
 
                 end
 
                 end
 
             end
 
             end
 
         end
 
         end
 
     end
 
     end
     if not r then
+
     if type( r ) == "nil" then
         if not since  or  since <= Sort.serial then
+
         if not since  or  since <= Failsafe.serial then
             r = Sort.serial
+
             r = Failsafe.serial
 
         else
 
         else
 
             r = false
 
             r = false
Zeile 307: Zeile 368:  
     end
 
     end
 
     return r
 
     return r
end -- Sort.failsafe()
+
end -- Failsafe.failsafe()
      Zeile 366: Zeile 427:  
         end
 
         end
 
     end
 
     end
     return Sort.failsafe( since )  or  ""
+
     return Failsafe.failsafe( since )  or  ""
 
end -- p.failsafe()
 
end -- p.failsafe()
  
Cookies helfen uns bei der Bereitstellung von imedwiki. Durch die Nutzung von imedwiki erklärst du dich damit einverstanden, dass wir Cookies speichern.

Navigationsmenü