Wikipedia:Lua/Modul/Wikidata/Time
| Vorlagenprogrammierung | Diskussionen | Lua | Unterseiten | |
| Modul | Deutsch
|
Modul: | Dokumentation | |
Modul zur Verarbeitung von Wikidata-Zeitinformationen
Dieses Modul wird mit
local success, t = pcall(require, "Modul:Wikidata/Time")
local Time = t.service
eingebunden. Es arbeitet mit Zeit-Objekten. Diese können mit
local source = mw.wikibase.getBestStatements( 'Q79822', 'P569' ) )
local someDate = source[1].mainsnack.datavalue.value
local t = Time:new(someDate)
erzeugt werden.
Konstanten
Konstanten werden vermutlich nur innerhalb des Moduls verwendet, stehen jedoch auch außerhalb zur Verfügung:
- MATCHING ist das string.match pattern, mit dem in Wikidata die Eigenschaft datavalue.value.time analysiert wird.
- PRECISIONLEVEL ist eine Tabelle mit Bezeichnern für jeden möglichen Wert von datavalue.value.precision. Die Bezeichner für Präzisionsebenen über 8 bezeichnen die Felder der Zeit-Objekte: year, month, day, hour, min und sec
- DEFAULTFORMAT ist eine Tabelle, die den Präzisionsebenen von 6 bis 14 je einen format-string zuordnet, der zur Darstellung eines Zeit-Objektes genutzt wird, wenn dafür kein anderer format-string angegeben wird. Zeit-Objekte mit noch geringerer Präzision werden nicht mit default format dargestellt.
Felder
Alle Felder eines Zeitobjektes werden in Modul:Time beschrieben. Hier bitte nur noch mal zur Beachtung:
- timezone (Zeitzone; ACHTUNG: Dieses Modul arbeitet derzeit noch ohne Berücksichtigung der Zeitzone. Zeitzonen können in Wikidata derzeit nicht erfasst werden. (Siehe Phab:T87764) Dieser Fehler wird möglicherweise in Zukunft behoben werden.)
Methoden
- Time:qualified(statement) statement und Status zur Qualifikation desselben
- Time:getFiltered(statements) aus einer statement-Liste jene herausfiltern, die nicht Zeit-disqualifiziert sind
Weitere Methoden, insbesondere zur Formatierung und zum Vergleich von Zeitobjekten werden aus Modul:Time geerbt.
Time:qualified(Statement)
Statement und Status zur Qualifikation desselben
| Parameter | |||
|---|---|---|---|
| Statement | der Dateninhalt eines Eigenschaftswertes, der qualifiziert werden soll, z.B.
local myStatement = mw.wikibase.getBestStatements('Q79822', 'P108')[1]
local qualifiedStatement, isQualified = myTime:qualified(myStatement)
if not qualifiedStatement then
mw.log('Statement time differs from my time!')
elseif not isQualified then
mw.log('Statement is time independent!')
else
mw.logObject(qualifiedStatement.mainsnak)
end
| ||
| Rückgabewert: | eines der folgenden Wertepaare | ||
snak, true
|
wenn der Wert des Zeit-Objektes den Dateninhalt qualifiziert | ||
snak, false
|
wenn der Dateninhalt zeitunabhängig ist | ||
nil, true
|
wenn der Dateninhalt nil ist (Ex falso quodlibet) | ||
nil, false
|
wenn der Wert des Zeit-Objektes den Dateninhalt disqualifiziert | ||
Time:getFiltered(statements)
Neue Liste mit Aussagen, aus denen jene herausgefiltert sind, die durch dieses Zeit-Objekt disqualifiziert sind.
| Parameter | ||
|---|---|---|
| statements | Liste mit Aussagen, die z. B. mit mw.wikidata.getBestStatements erzeugt worden sein kann
| |
| Rückgabewert: | Liste mit Aussagen im selben Format, jedoch ggf. mit weniger Einträgen | |
Funktionen
timify(values)
Erstellt aus einer Wertetabelle eine Tabelle von Zeit-Objekten
der Parameter ist als {<source>, <source>, ...} anzugeben. Für die <source>-Elemente gelten ähnliche Bedingungen, wie für
den Parameter des Konstruktors. Es können jedoch auch der Rückgabewert von mw.wikidata.getBestStatements('Q...', 'P...'), oder alle Werte einer Eigenschaft, die ein einzelnes Statement qualifiziert, direkt übergeben werden.
local statements = mw.wikidata.getBestStatements('Q79822', 'P569')
local myTimes = Time.timify(statements)
for _, birthday in myTimes do
mw.log(birthday:format())
end
statements = mw.wikidata.getBestStatements('Q79822', 'P108')
myTimes = Time.timify(statements[1].qualifiers.P580)
for _, start in myTimes do
mw.log(start:format())
end