Wikipedia:Lua/Modul/URIutil/de

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Vorlagenprogrammierung Diskussionen Lua Test Unterseiten
Modul Deutsch English

Modul: Dokumentation

URIutil – Modul mit Funktionen für Zeichenketten im Zusammenhang mit Ressourcen-Bezeichnern. Gemeint ist hier nicht die Teilmenge, die als Locator eine URL bildet (siehe dazu URLutil). Vielmehr sind eindeutige Schlüsselnummern für Dokumente aller Art behandelt: DOI, ISBN, ISSN, URN; daneben auch nationale und andere Codes wie LCCN, GTIN/EAN, DNB, GND (PND), ZDB, PPN, PMID, die von öffentlichen Institutionen vergeben werden.

Funktionen für Vorlagen

[Quelltext bearbeiten]

Alle Funktionen haben genau einen unbenannten Parameter. Dieser ist tolerant gegenüber umgebenden Leerzeichen usw. Keine vorangestellten Schlüssel wie „DOI“ oder „ISBN“.

Der Rückgabewert ist eine leere Zeichenkette („nichts“), wenn der Parameterwert die Erwartung nicht erfüllt. Wenn ein Ergebnis vorhanden oder die Abfragebedingung wahr ist, resultiert mindestens ein Zeichen. Das Ergebnis beginnt oder endet nicht mit Leerzeichen.

coreISSN
7 signifikante Ziffern einer 8- oder 13-stelligen ISSN
formatISBN
Gliederung durch Bindestriche; Großschreibung des X.
formatISSN
Gliederung durch Bindestriche; Großschreibung des X.
  • Optional: zweiter Parameter 8 oder 13 für Ausgabeformat; sonst wie vorgefunden.
isDNBvalid
Ist ein Bezeichner der DNB (auch GND, IDN und ZDB) gültig, einschließlich Prüfziffer?
  • GND sind die mindestens 9-stelligen, nicht die früheren 8-stelligen SWD und GKD mit durch Bindestrich abgetrennter Prüfziffer.
Wenn auf eine bis zu 7 Ziffern lange Zahl eine durch Bindestrich abgetrennte Prüfziffer folgt, wird nach den Regeln vor 2012 eine Validierung für SWD und GKD versucht.
  • nichts – unzulässig
  • Anzahl der Ziffern oder 2011gültig
isDOI
Ist es ein syntaktisch richtiger Digital Object Identifier?
  • Nummer der Organisation – ja
  • nichts – unzulässig
isHandle
Ist es ein syntaktisch richtiges Handle?
  • Nummer der Organisation – ja
  • nichts – unzulässig
isEscValid
Ist das Prozent-Encoding richtig gehandhabt?
  • nichts – keine Beanstandungen
  • Zeichenkette – beanstandete Sequenz
isGTINvalid
Ist es eine gültige GTIN (European Article Number), einschließlich Prüfziffer?
  • Anzahl der Ziffern.
  • nichts – unzulässig
GTIN sind auch die ISBN-13, ISSN-13 und vielleicht einmal AV-Medien.
isISBN
Ist es eine syntaktisch richtige ISBN?
  • 10wenn 10 Ziffern und Bindestriche; auch xX am Ende
  • 13wenn 13 Ziffern und Bindestriche; beginnend mit Bookland
  • nichts – ansonsten
isISBNvalid
Ist es eine formal richtige ISBN, einschließlich Prüfziffer?
  • 10 oder 13ja
  • nichts – nein
isISSNvalid
Ist es eine formal richtige ISSN, einschließlich Prüfziffer?
  • 8 oder 13ja
  • nichts – nein
isLCCN
Ist es eine syntaktisch richtige LCCN?
  • Zeichenkette – erkannt, ohne Trennzeichen
  • nichts – unzulässig
linkDNBopac
Geklammertes Weblink auf DNB-Portal (OPAC)
linkDOI
Geklammertes Weblink auf DOI-Resolver
linkHandle
Geklammertes Weblink auf Handle
linkISBN
Geklammertes Wikilink auf Booksources mit vorangestelltem Schlüsselwort ISBN und formatISBN (auch bei syntaktisch falschen Angaben)
  • Optional: zweiter Parameter 1 erlaubt ungültige Prüfziffer.
  • Optional: link=0 sowie nbsp=0
linkISSN
Geklammertes Weblink auf Zeitschriftendatenbank mit vorangestelltem Schlüsselwort ISSN und formatISSN (auch bei syntaktisch falschen Angaben)
  • Optional: zweiter Parameter 1 erlaubt ungültige Prüfziffer.
  • Optional: link=0 sowie nbsp=0
class="plainlinks-print" wird nicht veranlasst.
linkLCCN
Geklammertes Weblink auf die Library of Congress mit vorangestelltem Schlüsselwort LCCN
linkPMID
Geklammertes Weblink auf PubMed mit vorangestelltem Schlüsselwort PMID
linkURN
Geklammertes Weblink auf URN-Resolver
  • Optional: zweiter Parameter erlaubt spezifischen Resolver.
mayDOI
isDOI oder leer
  • Nummer der Organisation – ja
  • 0leer
  • nichts – unzulässig
mayHandle
isHandle oder leer
  • Nummer der Organisation – ja
  • 0leer
  • nichts – unzulässig
mayISBN
isISBN oder leer
  • 10 oder 13ja
  • 0 leer
  • nichts – unzulässig
mayISSN
isISSNvalid oder leer
  • 8 oder 13ja
  • 0leer
  • nichts – unzulässig
mayLCCN
isLCCN oder leer
  • Zeichenkette – erkannt, ohne Trennzeichen
  • 0leer
  • nichts – unzulässig
mayURI
URI allgemein oder leer; keine Leerzeichen im Inneren, isEscValid
  • Optional: zweiter Parameter 1 erlaubt nur ASCII (keine IRI).
  • Zeichenkette – beanstandete Sequenz
  • nichts – keine Beanstandungen
mayURN
Zulässiger URN oder leer
  • nichts – keine Beanstandungen
  • Zeichenkette – beanstandeter Ausschnitt
plainISBN
Reine ISBN nur mit Ziffern (und X); 10 oder 13 Zeichen.
Geeignet für Wikipedia:BibRecord.
targetISSN
Geklammertes Weblink auf Zeitschriftendatenbank (ohne vorangestelltes Schlüsselwort ISSN) und formatISSN (auch bei syntaktisch falschen Angaben)
  • Optional: zweiter Parameter 1 erlaubt ungültige Prüfziffer.
class="plainlinks-print" wird nicht veranlasst.
uriDOI
Wie linkDOI mit vorangestelltem Schema doi:
uriHandle
Wie linkHandle mit vorangestelltem Schema hdl:
uriURN
Wie linkURN mit vorangestelltem Schema urn:
failsafe

Die Failsafe-Schnittstelle erlaubt den damit ausgerüsteten Modulen in globaler Verteilung

  • sicherzustellen, dass eine von einer Vorlage oder einem Modul benötigte Funktion in der lokalen Kopie eines Bibliotheksmoduls vorhanden ist, und ggf. auch in einer erforderlichen Mindestversion;
  • die globale Aktualisierung und Verknüpfung von Modulen über Wikidata zu verwalten.

Die Failsafe-Schnittstelle liegt sowohl auf Ebene der Vorlagen wie auch in direktem Lua-Zugriff vor.

Die Funktionen sind im Einzelnen (nicht alle werden bereits überall in vollem Umfang unterstützt):

Parameter
Wert Ergebnis aktuell
nichts
false
lokale Version »2024-08-05«
Mindest­version Mindestversionsbezeichnung
Datum im ISO-Format

Es wird verglichen, ob das aktuelle Modul diese Version oder später erfüllt.

  • leer, falls Mindestversion nicht erfüllt
  • 2001-01-01 → »2024-08-05«
  • 2099-01-01 → »«
wikidata Versionsbezeichnung der globalen Mutter (d:Q19644443)
  • Versionsbezeichnung auf Wikidata
  • lokal, falls dort keine gefunden
»2024-08-05«
item ID des Wikidata-Items
  • leer, falls nicht definiert
»Q19644443«
~ Übereinstimmung der lokalen mit der auf Wikidata registrierten Versionsbezeichnung
  • leer, falls aktuell
  • Versionsbezeichnung auf Wikidata, falls ungleich
»«
@ Ist die aktuelle (Modul-)Seite richtig mit Wikidata verknüpft?
  • leer, falls mit dem richtigen Item verknüpft
  • Item-ID, falls nicht
Der Rückgabewert ist in der Vorlagenprogrammierung leer und per Lua false; andernfalls die angegebene Zeichenkette.

Optionale Parameter

[Quelltext bearbeiten]

Bei den Funktionen link* und uri* wird das vorangestellte Schlüsselwort/Schema verlinkt auf den mutmaßlich entsprechenden enzyklopädischen Artikel. Der Parameterwert kann einen alternativen Seitentitel spezifizieren; oder durch link=0 kann die Verlinkung unterdrückt werden.

Bei den Funktionen link* wird das vorangestellte Schlüsselwort abgetrennt durch geschütztes Leerzeichen; durch nbsp=0 kann ein einfaches Leerzeichen erzwungen werden.

Markierung fehlerhafter Codes

[Quelltext bearbeiten]

Bei den Funktionen link* und uri* wird fehlerhaften Codes eine class="invalid-ISBN" usw. zugeordnet. Diese mag dann benutzerspezifisch oder als Gadget zur Hervorhebung benutzt werden, etwa mittels eines roten Rahmens um den Code.

.invalid-ISBN,
.invalid-ISSN {
   border: solid 2px #FF0000;
}

Beispiele (Testseite)

[Quelltext bearbeiten]

Eine Testseite illustriert praktische Beispiele.

Funktionen für Lua-Module

[Quelltext bearbeiten]

Alle oben dokumentierten Funktionen können auch über require() in andere Module eingebunden werden:[1]

local lucky, URIutil = pcall( require, "Modul:URIutil" )
if type( URIutil ) == "table" then
    URIutil = URIutil()
else
    -- Fehlerfall; URIutil enthält Fehlermeldung
    return "<span class=\"error\">" .. URIutil .. "</span>"
end

Danach stehen zur Verfügung:

  • URIutil.coreISSN( attempt )
  • URIutil.formatISBN( attempt )
  • URIutil.formatISSN( attempt, achieve )
  • URIutil.isDNBvalid( attempt )
  • URIutil.isDOI( attempt )
  • URIutil.isEscValid( attempt )
  • URIutil.isGTINvalid( attempt )
  • URIutil.isHandle( attempt )
  • URIutil.isISBN( attempt )
    • Zweiter Rückgabewert: table mit Komponenten der ISBN; number mit Fehlercode
  • URIutil.isISBNvalid( attempt )
    • Zweiter Rückgabewert: table mit Komponenten der ISBN; number mit Fehlercode
  • URIutil.isISSNvalid( attempt )
  • URIutil.isLCCN( attempt )
  • URIutil.linkDOI( attempt )
  • URIutil.linkHandle( attempt )
  • URIutil.linkISBN( attempt, allow, abbr, adhere, alert )
  • URIutil.linkISSN( attempt, allow, abbr, adhere, alert )
  • URIutil.linkLCCN( attempt )
  • URIutil.linkPMID( attempt )
  • URIutil.linkURN( attempt, alternate )
  • URIutil.mayDOI( attempt )
  • URIutil.mayHandle( attempt )
  • URIutil.mayISBN( attempt )
  • URIutil.mayISSN( attempt )
  • URIutil.mayLCCN( attempt )
  • URIutil.mayURI( attempt, ascii )
  • URIutil.mayURN( attempt )
  • URIutil.plainISBN( attempt )
  • URIutil.targetISSN( attempt, allow, any1, any2, alert )
  • URIutil.uriDOI( attempt )
  • URIutil.uriHandle( attempt )
  • URIutil.uriURN( attempt, alternate )
  • URIutil.failsafe( atleast )

Die Eingabeparameter sind jeweils:

  • attemptstring mit dem Code

Optional:

  • achievenumber 8 oder 13 für Ausgabeformat; sonst wie vorgefunden.
  • allowtrue erlaubt ungültige Prüfziffer
  • alertstring mit Wartungskategorie
  • abbrtrue oder string verlinkt vorangestellte Abkürzung ISBN/ISSN.
  • adheretrue benutzt &nbsp; statt einfachem Leerzeichen.
  • asciitrue erlaubt nur ASCII (keine IRI).

Im Erfolgsfall geben die meisten Funktionen eine Zeichenkette zurück, die URIutil.is*() die angegebene number oder string; bei Misserfolg jeweils false.

Allgemeine Bibliothek; nicht eingegrenzt.

Abhängigkeiten

[Quelltext bearbeiten]

Installation auf anderen Projekten

[Quelltext bearbeiten]

Siehe englischsprachige Dokumentation.

  1. Statt
    URIutil = URIutil()
    wurde früher auch angegeben:
    URIutil = URIutil.URIutil()
    Dies sollte nach und nach vereinfacht werden.