Wikipedia:Lua/Modul/URL/de

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

Modul: Dokumentation

Dieses Modul dient dazu, URLs zu analysieren und Links zu formatieren.

Einbindung in Moduln

[Quelltext bearbeiten]

Das Modul wird eingebunden mit

local success, URL = pcall(require, "Modul:URL")

Neue URLs können dann so analysiert werden:

local meineURL = 'https://www.meinesite.de/meinPfad/index.php?meineParameter&weitere'
local myURL = URL:new(meineURL)
local sampleInfo = myURL.domain

Mit einer solchen URL kann je nach gewünschtem Format ein Link erzeugt werden mit:

local myURL = URL:new('http://www.meineSite.de/index.html#meinePosition')
local myFormat = 'Springe direkt zu <portion> hin!'
return myURL:format(myFormat)

was dann 'Springe direkt zu [http://www.meineSite.de/index.html#meinePosition meinePosition] hin!' liefert, also:

Springe direkt zu meinePosition hin!

URL:new(<Adresse>) Der einzige Parameter ist namenlos. Er ist als Zeichenkette in Form einer absoluten Adresse (nicht "../../meinVerzeichnis/index"), oder einer Tabelle zu übergeben. Im letzteren Fall muss die Tabelle mindestens das Feld "domain" enthalten.

full Adresse, wie im Konstruktor übergeben
protocol (optional, Standardwert: leer) Das Netzwerkprotokoll (vor "://", z. B. "http", "https", oder "ftp")
server (optional, Standardwert: leer) Der Name des (virtuellen) Rechners, auf dem die Ressource liegt. Häufige Namen sind "www", "ftp", "public", o. ä. Ist er nicht angegeben, wird er bei Anfragen an eine Domäne in der Regel automatisch anhand des Protokolls ausgewählt.
domain (Pflichtangabe) Der Name einer Domäne, wie z. B. "wikipedia.org"
TLD Top Level Domain - der signifikanteste Teil des Domänennamens. Typische TLDs sind "com", "de", "org", "com.tw", oder "co.uk". Wenn ein Domänenname nur aus einer TLD besteht, wird die Adresse zu "nic." + TLD erweitert.
subdomain (optional, Standardwert: leer) Unterdomäne, bzw. Ergänzung zum Domänennamen. Dieser am wenigsten signifikante Teil des Domänennamens ist in domain nicht enthalten.
path (optional, Standardwert: leer) Verzeichnisangabe für eine Ressource auf dem Internetserver. Fehlt diese Angabe, wird auf das (virtuelle) Wurzelverzeichnis zugegriffen.
file (optional, Standardwert: leer) Dateiname einer Ressource. Ist er nicht angegeben, wird auf vielen Internetservern bei http-Anforderungen die Datei index.html ausgeliefert.
parameters (optional, Standardwert: leer) Der Teil einer Adresse, der bei vielen Aufrufen von php-Programmen, oder dergleichen die Parameter enthält. Er steht in einer Adresse immer hinter einem Fragezeichen.
portion (optional, Standardwert: leer) Für deep links: ein Name (meist eine Überschrift), der als id innerhalb einer Website gefunden und direkt angesprungen werden kann. In einem Link folgt er auf eine Nummernraute ("#"). Diese ist nicht Teil dieses Feldes.

format(Definition)

[Quelltext bearbeiten]

Diese Methode dient dazu, aus den Inhalten dieses Objektes eine Wikitext-Zeichenkette zu erstellen. Diese enthält dann einen Link zu der angegebenen Adresse. Parameter:

Definition: Zeichenkette, mit der Linktext definiert werden soll. Hierbei gibt es drei Möglichkeiten:
  1. statischer Linktext
  2. handelt es sich bei der Definition nur um den Namen eines Feldes, so wird als Linktext der Wert dieses Feldes angezeigt.
  3. handelt es sich um einen Text, der Feldnamen in spitze Klammern gefasst enthält, so wird der gesamte Text ausgegeben. Der Teil vom ersten bis zum letzten angegebenen Feldnamen wird jedoch zum Linktext, wobei alle gefundenen Feldnamen, die in spitzen Klammern angegeben sind, durch die entsprechenden Werte ersetzt werden.

Beispiel:

local myURL = URL:new('http://www.meineSite.de/index.html#meinePosition')
return myURL:format('Link zu <domain> - <protocol>')

sollte Link zu [http://www.meineSite.de/index.html#meinePosition meineSite.de - http] ergeben, also:

Link zu meineSite.de - http

Kurzschreibweise für

 format('full')

Kurzschreibweise für

 format('domain')

Spezifikation

[Quelltext bearbeiten]
  • Dieses Modul ist dafür gedacht, Objekte zu erzeugen, die Informationen über analysierbare URL-Angaben formatieren können. Kann ein solches Objekt vom Konstruktor nicht erzeugt werden, so ist als (erster!) Rückgabewert nil zurück zu geben. Eine eventuelle Fehlermeldung, die weitere Auskünfte geben kann, warum z. B. die Erzeugung fehlgeschlagen ist, kann als optional auslesbarer 2. Rückgabewert entworfen und implementiert werden.
  • Jedes Objekt soll eine Domain zurückgeben können. Ein Objekt, das das nicht kann, soll nicht erzeugt werden.
  • Jedes Objekt soll mit einer format()-Methode einen Link erzeugen können. Diese Methode soll ihrerseits durch einen Stringparameter gesteuert werden, der das Link-label definiert. Die Methode darf keinen Fehler erzeugen. Sie soll den Versuch unternehmen, einen als Parameter benannten Eigenschaftswert als label zu verwenden. Es obliegt dem Verwender, als label einen konstanten Wert, oder einen Eigenschaftswert zu einer verwendeten URL auszuwählen, durch den ein Label erzeugt wird.
  • Diese Spezifikation ist für den derzeitigen Einsatz (Stand 2.2.2023) einzuhalten. Darüber hinaus steht einer Erweiterung der Funktionalität nichts im Weg.