395
Bearbeitungen
(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 = " | 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 | 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, | r.month = tonumber( analyse:sub( 5, 6 ) ) | ||
r.dom = tonumber( analyse:sub( 7, | r.dom = tonumber( analyse:sub( 7, 8 ) ) | ||
r.hour = tonumber( analyse:sub( 9, | r.hour = tonumber( analyse:sub( 9, 10 ) ) | ||
r.min = tonumber( analyse:sub( 11, | r.min = tonumber( analyse:sub( 11, 12 ) ) | ||
r.sec = tonumber( analyse:sub( 13, | 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() | ||
suitable = parser[ slang ] | |||
if suitable then | |||
local l | local l | ||
l, r = pcall( Parser | 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 | local d = foreignModule( DateTime.suite, | ||
if | 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 | 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( | 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 | 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 = | local slang = self.lang or "en" | ||
local babel | 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 | if mon4 and mon4[ self.month ] then | ||
limit4 = true | |||
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, | 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 ) | |||
) 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 |