Wikipedia:Lua/Modul/Wikidata/Time/de
Vorlagenprogrammierung | Diskussionen | Lua | Unterseiten | |
Modul | Deutsch
|
Modul: | Dokumentation |
Modul zur Verarbeitung von Wikidata-Zeitinformationen
[Quelltext bearbeiten]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
[Quelltext bearbeiten]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
[Quelltext bearbeiten]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
[Quelltext bearbeiten]- 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)
[Quelltext bearbeiten]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)
[Quelltext bearbeiten]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
[Quelltext bearbeiten]timify(values)
[Quelltext bearbeiten]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