Vikipedio:Lua/Moduloj/URLutil/de

El Vikipedio, la libera enciklopedio
Ŝablona programado Diskutoj Lua Testoj Subpaĝoj
Modulo Esperanto English Deutsch

Modulo: Dokumentado

URLutil – Modul mit Funktionen für Zeichenketten im Zusammenhang mit Internet-Adressen (URL; IP-Adressen – auch IPv4 und IPv6 – sowie E-Mail). Auch internationalisierte Adressen (IRI) sind möglich.

Unterstellt wird ein Nutzen für ein Wiki-Projekt; also sinnvolle Adressen im offenen Internet. Folgende Sonderfälle sind nicht programmiert, aber auch kaum relevant:

  • IPv4-Adresse nicht in Standard-Notation (durch Punkte gegliedert, dezimal)
  • URL mit IPv6-Host (geklammert; beißt sich etwas mit der Wikisyntax)
  • Authority mit username

Funktionen für Vorlagen[redakti fonton]

Alle Funktionen haben genau einen unbenannten Pfichtparameter (sinnvollerweise anzugeben). Dieser ist tolerant gegenüber Leerzeichen vor oder nach dem Inhalt. In der Regel handelt es sich dabei um eine URL; ggf. sind auch nur Teile davon möglich.

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. HTML-Entities sind in der Eingabe möglich und werden im Resultat aufgelöst.

getURIScheme
Extrahiere das URI-Schema aus einer beliebigen URL, z.B. einem mailto: Link) (Ergebnis kleingeschrieben; ohne Doppelpunkt und Schrägstriche). Für Ressourcen-URLs siehe auch das spezialisierte getScheme.
  • mailto – URI-Schema
  • // – Spezialfall: schemarelative URL (z.B. //de.wikipedia.org)
  • nichts – wenn Beginn der URL unzulässig
getAuthority
Extrahiere aus einer Ressourcen-URL die Server-Ansteuerung (Ergebnis kleingeschrieben)
  • nichts – wenn unzulässig
getFragment
Extrahiere aus einer Ressourcen-URL den Fragmentbezeichner
Parameter 2 – (optional) Dekodierung
  • 2=% – URL ist Prozent-kodiert
  • 2=WIKI – URL ist Wiki-kodiert mit Punkten und Unterstreichungsstrich
Ergebnis:
  • nichts – wenn nicht angegeben
  • beginnend mit # – wenn vorhanden
getHost
Extrahiere aus einer Ressourcen-URL die Domain oder IP-Adresse (Ergebnis kleingeschrieben)
  • nichts – wenn unzulässig
getLocation
Extrahiere die URL ohne möglichen Fragmentbezeichner
getPath
Extrahiere aus einer Ressourcen-URL den Pfad ohne mögliche Query und ohne möglichen Fragmentbezeichner.
Das Ergebnis beginnt mit / als Basis-Ressource.
getPort
Extrahiere aus einer Ressourcen-URL die Port-Angabe (Ergebnis Zahl)
  • nichts – wenn nicht vorhanden
getQuery
Extrahiere aus einer Ressourcen-URL den Query-Anteil
Parameter 2 – (optional) Einzelner Parametername
Parameter 3 – Alternativer Separator wie ; – Vorgabe: &
Ergebnis:
  • nichts – wenn nicht angegeben
  • Einzelwert, wenn einzelner Parameter abgefragt
getRelativePath
Extrahiere aus einer Ressourcen-URL den Pfad samt Query und möglichem Fragmentbezeichner, jedoch relativ zum Host.
getScheme
Extrahiere aus einer Ressourcen-URL das Schema (Ergebnis kleingeschrieben; einschließlich doppelter Schrägstriche)
  • // – relatives Protokoll
  • https:// – Protokoll
  • nichts – wenn Beginn der URL unzulässig
getTLD
Extrahiere aus einer Ressourcen-URL die Top-Level-Domain (Ergebnis kleingeschrieben)
  • nichts – wenn unzulässig oder IP
getTop2domain
Extrahiere aus einer Ressourcen-URL die obersten beiden Level der Domain (Ergebnis kleingeschrieben)
  • nichts – wenn unzulässig oder IP
getTop3domain
Extrahiere aus einer Ressourcen-URL die obersten drei Level der Domain (Ergebnis kleingeschrieben)
  • nichts – wenn unzulässig oder IP
isAuthority
Ist es die Server-Adresse (auch IP) einer Ressource, einschließlich Port?
  • 1ja
isDomain
Ist es eine benannte Domain, einschließlich Sub-Domains?
  • 1ja
isDomainExample
Ist es eine Beispiel-Domain nach RFC 2606 (example.com example.edu example.net example.org)?
  • 1ja
isDomainInt
Ist es eine internationalisierte Domain (nicht ASCII oder Punycode)?
  • 1ja
isHost
Ist es eine Server-Adresse ohne Port (auch IP)?
  • 1ja
isIP
Ist es eine IP-Adresse?
  • 4 wenn IPv4 (in Standard-Notation)
  • 6 wenn IPv6
  • nichts – ansonsten
isIPlocal
Ist es eine IPv4-Adresse, die mutmaßlich nicht zum Internet gehört? RFC 1918, RFC 1122; auch alles wie 0.0.0.0 (RFC 5735)
  • 1ja
isIPv4
Ist es eine IPv4-Adresse in Standard-Notation (durch Punkte gegliedert, dezimal)?
  • 1ja
isIPv6
Ist es eine IPv6-Adresse?
  • 1ja
isMailAddress
Ist es eine E-Mail-Adresse?
  • 1ja
isMailLink
Ist es ein E-Mail-Link (mailto:)?
  • 1ja
isProtocolMW
Ist es eine URL / Schema-Bezeichner, das vom Wiki allgemein erkannt wird?
Aktuelle Liste siehe [1]
  • 1ja
isProtocolDialog
Ist es eine URL / Schema-Bezeichner, das im Wiki einen Dialog einleiten kann?
mailto, irc, ircs, ssh, telnet
  • 1ja
isProtocolWiki
Ist es eine URL / Schema-Bezeichner, womit im Wiki auf eine Ressource verwiesen werden kann?
Relatives Protokoll sowie ftp ftps git http https mms nntp sftp svn worldwind
Unerwünscht sind hier: gopher, wais sowie mailto, irc, ircs, ssh, telnet.
  • 1ja
isResourceURL
Ist es eine URL, bei der allgemein auf eine Ressource zugegriffen werden kann? Das wären: relatives Protokoll, http, https, ftp und außerdem ein gültiger Host. Andere URL wären auf Projekt- und Funktionsseiten vorstellbar, nicht aber im enzyklopädischen Bereich.
  • 1ja
isSuspiciousURL
Ist es eine syntaktisch „verdächtige“ URL, vor der gewarnt werden sollte?
  • 1ja
isUnescapedURL
Ist es eine URL, bei der noch Wikisyntax [ | ] abgefangen werden muss?
  • 1ja
isWebURL
Ist es eine gültige Adresse für eine Ressource (Protokoll beliebig)?
  • 1ja
wikiEscapeURL
Wikisyntax-sicher [ | ] escapen.
  • Identisch mit dem Parameter, wenn keine problematischen Zeichen vorkommen.
  • Ersatz von [ | ] durch Webserver-sichere HTML-Entities, falls vorhanden. Eine Pipe ist in der Vorlagensyntax nicht ohne Weiteres möglich.

Beispiele (Testseite)[redakti fonton]

Eine Testseite illustriert praktische Beispiele.

Funktionen für Lua-Module[redakti fonton]

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

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

Danach stehen folgende Funktionen zur Verfügung:

  • URLutil.getURIScheme()
  • URLutil.getAuthority()
  • URLutil.getFragment()
    Zeichenkette nach #
  • URLutil.getHost()
  • URLutil.getLocation()
  • URLutil.getPath()
  • URLutil.getPort()
    numerischer Wert, oder false
  • URLutil.getQuery(url, key, separator)
    Zeichenkette nach ?
  • URLutil.getQueryTable(url, separator)
    table mit allen Zuweisungen key=value
  • URLutil.getRelativePath()
  • URLutil.getScheme()
  • URLutil.getTLD()
  • URLutil.getTop2domain()
  • URLutil.getTop3domain()
  • URLutil.isAuthority()
  • URLutil.isDomain()
  • URLutil.isDomainExample()
  • URLutil.isDomainInt()
  • URLutil.isHost()
  • URLutil.isIP()
    numerisch 4, 6, oder false
  • URLutil.isIPlocal()
  • URLutil.isIPv4()
  • URLutil.isIPv6()
  • URLutil.isMailAddress()
  • URLutil.isMailLink()
  • URLutil.isProtocolMW()
  • URLutil.isProtocolDialog()
  • URLutil.isProtocolWiki()
  • URLutil.isResourceURL()
  • URLutil.isSuspiciousURL()
  • URLutil.isUnescapedURL()
  • URLutil.isWebURL()
  • URLutil.wikiEscapeURL()

Im Erfolgsfall geben die URLutil.get*() eine Zeichenkette zurück, die URLutil.is*() den Wert true (sofern nicht anders angegeben); bei Misserfolg jeweils false.

Zusätzlich gibt es zwei Konstanten:

  • URLutil.serial – string, aktuelle Versionsnummer (Datum)
  • URLutil.suite – "URLutil"

Verwendung[redakti fonton]

Allgemeine Bibliothek; nicht eingegrenzt.

Abhängigkeiten[redakti fonton]

Keine.

Siehe auch[redakti fonton]

  • mw: Uri library – andere Funktionalitäten auf allgemeiner URI; aber speziell für Wiki-URL hilfreich.