Modul:DateTime: Unterschied zwischen den Versionen

3.529 Bytes hinzugefügt ,  3. Juli 2020
K
32 Versionen importiert: Doku-Vorlage
(2019-07-01, https://de.wikipedia.org/w/index.php?title=Wikipedia:Administratoren/Anfragen&curid=6974524&diff=190654783&oldid=190653584)
K (32 Versionen importiert: Doku-Vorlage)
 
(6 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
local DateTime  = { serial = "2019-07-01",
local DateTime  = { serial = "2020-04-08",
                     suite  = "DateTime",
                     suite  = "DateTime",
                     item  = 20652535 }
                     item  = 20652535 }
-- Date and time objects
-- Date and time objects
local Failsafe  = DateTime
local Failsafe  = DateTime
local GlobalMod  = DateTime
local Calc      = { }
local Calc      = { }
local Meta      = { }
local Meta      = { }
Zeile 106: Zeile 107:
     HST  = -1000    -- Hawaiian Standard Time
     HST  = -1000    -- Hawaiian Standard Time
}
}
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 476: Zeile 526:
         if amount <= 4 then
         if amount <= 4 then
             r.year = tonumber( analyse )
             r.year = tonumber( analyse )
         elseif n == 14 then
         elseif amount == 14 then
             -- timestamp
             -- timestamp
             r.year  = tonumber( analyse:sub(  1, 4 ) )
             r.year  = tonumber( analyse:sub(  1, 4 ) )
             r.month  = tonumber( analyse:sub(  5, 2 ) )
             r.month  = tonumber( analyse:sub(  5, 6 ) )
             r.dom    = tonumber( analyse:sub(  7, 2 ) )
             r.dom    = tonumber( analyse:sub(  7, 8 ) )
             r.hour  = tonumber( analyse:sub(  9, 2 ) )
             r.hour  = tonumber( analyse:sub(  9, 10 ) )
             r.min    = tonumber( analyse:sub( 11, 2 ) )
             r.min    = tonumber( analyse:sub( 11, 12 ) )
             r.sec    = tonumber( analyse:sub( 13, 2 ) )
             r.sec    = tonumber( analyse:sub( 13, 14 ) )
         else
         else
             r = false
             r = false
Zeile 1.215: Zeile 1.265:
             r = { }
             r = { }
         else
         else
             local slang = ( alien or "" )
             local slang = ( alien or "" )
            local parser = { en  = "GermanEnglish",
                            de  = "GermanEnglish",
                            frr = "GermanEnglish",
                            nds = "GermanEnglish" }
            local suitable
             if slang == "" then
             if slang == "" then
                 slang = "en"
                 slang = "en"
Zeile 1.224: Zeile 1.279:
                 end
                 end
             end
             end
             slang = slang:lower()
             slang   = slang:lower()
             if slang == "en" or slang == "de" then
             suitable = parser[ slang ]
            if suitable then
                 local l
                 local l
                 l, r = pcall( Parser.GermanEnglish, r )
                 l, r = pcall( Parser[ suitable ], r )
                 if l and r then
                 if l and r then
                     if not Prototypes.fair( r ) then
                     if not Prototypes.fair( r ) then
Zeile 1.238: Zeile 1.294:
                 end
                 end
             else
             else
                 r = "unknown language"
                 r = "unknown language: " .. slang
             end
             end
         end
         end
Zeile 1.304: Zeile 1.360:
     -- Retrieve localization submodule
     -- Retrieve localization submodule
     if not Meta.localized then
     if not Meta.localized then
         local l, d = pcall( mw.loadData, "Module:DateTime/local" )
         local d = foreignModule( DateTime.suite,
         if l then
                                false,
                                "local",
                                DateTime.item )
         if type( d ) == "table" then
             local wk
             local wk
             if d.slang then
             if d.slang then
Zeile 1.317: Zeile 1.376:
                     for subk, subv in pairs( v ) do
                     for subk, subv in pairs( v ) do
                         wk[ subk ] = subv
                         wk[ subk ] = subv
                     end -- for k, v%s %s
                     end -- for k, v
                 else
                 else
                     World[ k ] = v
                     World[ k ] = v
Zeile 1.419: Zeile 1.478:
                                                                 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
                     if last and vsn.value == Meta.serial then
                     if last   and
                      vsn.value == ( Meta.serial or DateTime.serial ) then
                         r = false
                         r = false
                     else
                     else
Zeile 1.751: Zeile 1.812:
     local r = false
     local r = false
     if type( self ) == "table" then
     if type( self ) == "table" then
         local opts  = { lang = self.lang }
        local slang = self.lang or "en"
         local babel, slang
         local opts  = { lang = slang }
         local babel
         if type( adapt ) == "table" then
         if type( adapt ) == "table" then
             if type( adapt.lang ) == "string" then
             if type( adapt.lang ) == "string" then
Zeile 1.766: Zeile 1.828:
             opts.lonely = adapt.lonely
             opts.lonely = adapt.lonely
         end
         end
         babel = mw.language.new( opts.lang )
         babel = mw.language.new( opts.lang:lower() )
         if babel then
         if babel then
             local shift, show, stamp, suffix, limit4, locally
             local shift, show, stamp, suffix, limit4, locally
Zeile 1.777: Zeile 1.839:
                     stamp = string.format( "%d %s", self.dom, stamp )
                     stamp = string.format( "%d %s", self.dom, stamp )
                 end
                 end
                 if ask and ask:find( "Mon4" ) then
                 if ask and ask:find( "Mon4", 1, true ) then
                     local mon4 = World.months4[ opts.lang ]
                     local mon4 = World.months4[ opts.lang:lower() ]
                     if mon4 then
                     if mon4 and  mon4[ self.month ] then
                        if mon4[ self.month ] then
                        limit4 = true
                            limit4 = true
                        end
                     end
                     end
                 end
                 end
Zeile 1.789: Zeile 1.849:
             end
             end
             if self.hour then
             if self.hour then
                 stamp = string.format( "%s %02d:", stamp, self.hour )
                if stamp then
                    stamp = stamp .. " "
                else
                    stamp = ""
                end
                 stamp = string.format( "%s%02d:", stamp, self.hour )
                 if self.min then
                 if self.min then
                     stamp = string.format( "%s%02d", stamp, self.min )
                     stamp = string.format( "%s%02d", stamp, self.min )
Zeile 1.829: Zeile 1.894:
             if self.month then
             if self.month then
                 local bucket, m, suite, x
                 local bucket, m, suite, x
                 if show:find( "F" ) then
                 if show:find( "F", 1, true ) then
                     suite = "monthsLong"
                     suite = "monthsLong"
                 elseif show:find( "M" ) then
                 elseif show:find( "M", 1, true ) then
                     suite = "monthsAbbr"
                     suite = "monthsAbbr"
                 end
                 end
                 bucket = World[ suite ]
                 bucket = World[ suite ]
                 if bucket then
                 if bucket then
                     m = bucket[ opts.lang ]
                     m = bucket[ opts.lang:lower() ]
                     if slang then
                     if slang then
                         x = bucket[ slang ]
                         x = bucket[ slang:lower() ]
                     end
                     end
                     if m then
                     if m then
Zeile 1.951: Zeile 2.016:
     -- Returns:
     -- Returns:
     --    string
     --    string
     local dels = { false, "", "-", "-", "", ":", ":", ".", "", "" }
     local dels = { false, "", "-", "-", "", "", ":", ":", ".", "" }
     local wids = { false, 4,  2,  2,  2,  2,   2,  2,  3,  3  }
     local wids = { false, 4,  2,  2,  2,  2, 2,  2,  3,  3  }
     local s    = ""
     local s    = ""
     local n, r, spec
     local n, r, spec
Zeile 1.980: Zeile 2.045:
         end
         end
     end
     end
    r = r:gsub( "%.$", "" )
     return r
     return r
end -- Prototypes.tostring()
end -- Prototypes.tostring()
Zeile 2.049: Zeile 2.115:
     if not ask  or  ask == "" then
     if not ask  or  ask == "" then
         r1 = "c"
         r1 = "c"
    elseif ask == "*" then
        if World.present then
            if assigned.hour then
                if assigned.dom or assigned.month or assigned.year then
                    if World.present.both and
                      World.present.date and
                      World.present.time then
                        r1 = World.present.both
                                    :gsub( "$date", World.present.date )
                                    :gsub( "$time", World.present.time )
                    else
                        r1 = World.present.date
                    end
                end
                r1 = r1 or World.present.time
            else
                r1 = World.present.date
            end
        end
        r1 = r1 or "c"
     else
     else
         local template = World.templates[ ask ]
         local template = World.templates[ ask ]
Zeile 2.057: Zeile 2.143:
             if tmp then
             if tmp then
                 template = tmp[ ask ]
                 template = tmp[ ask ]
            end
            if not template then
                local i = slang:find( "-", 3, true )
                if i then
                    slang = slang:sub( 1,  i - 1 ):lower()
                    tmp  = World.templates[ slang ]
                    if tmp then
                        template = tmp[ ask ]
                    end
                end
             end
             end
         end
         end
Zeile 2.078: Zeile 2.174:
             end
             end
             if template.lift and
             if template.lift and
               (assigned.dom or
               ( assigned.dom or
                not (assigned.month or assigned.year or assigned.bc)
                not ( assigned.month or assigned.year or assigned.bc )
               ) then
               ) then
                 local stamp = false
                 local stamp = false
Zeile 2.102: Zeile 2.198:
                     end
                     end
                 end
                 end
                 if low or ask:find( "hh:mm:ss" ) then
                 if low or ask:find( "hh:mm:ss", 1, true ) then
                     if stamp then
                     if stamp then
                         r1 = string.format( "%s %s", r1, stamp )
                         r1 = string.format( "%s %s", r1, stamp )
Zeile 2.158: Zeile 2.254:
             if #s == 1 then
             if #s == 1 then
                 -- "YXWVUTSRQPONZABCDEFGHIKLM"
                 -- "YXWVUTSRQPONZABCDEFGHIKLM"
                 move = World.zones[ "!" ]:find( s )
                 move = World.zones[ "!" ]:find( s, 1, true )
                 if move then
                 if move then
                     move          = ( move - 13 ) * 100
                     move          = ( move - 13 ) * 100
Zeile 2.235: Zeile 2.331:


function p.test( args, alien )
function p.test( args, alien )
     local slang = args.lang
     local slang = args.lang or alien
     local obj  = Meta.fiat( args[ 1 ], false, args.shift )
     local obj  = Meta.fiat( args[ 1 ], false, args.shift )
     local r
     local r