Initiation au Lua avec Scribunto/L'objet URI

Début de la boite de navigation du chapitre
L'objet URI
Icône de la faculté
Chapitre no 14
Leçon : Initiation au Lua avec Scribunto
Chap. préc. :L'objet Title
Chap. suiv. :Librairie HTML

Exercices :

Sur l’objet URI
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Initiation au Lua avec Scribunto : L'objet URI
Initiation au Lua avec Scribunto/L'objet URI
 », n'a pu être restituée correctement ci-dessus.


L'objet URI

modifier

Librairie Uri

modifier

Nous commencerons par visualiser le contenu de cette librairie grâce au programme suivant :

local p = {}

function p.visualisation(frame)
	reponse = ""
	for index, objet in pairs(mw.uri) do
		reponse = reponse.."<br>À la clé "..index..", on trouve un objet de type : "..type(objet)
	end
	return reponse
end

return p


{{#invoke:Uri|visualisation}} nous donne :
À la clé parseQueryString, on trouve un objet de type : function
À la clé encode, on trouve un objet de type : function
À la clé fullUrl, on trouve un objet de type : function
À la clé canonicalUrl, on trouve un objet de type : function
À la clé buildQueryString, on trouve un objet de type : function
À la clé anchorEncode, on trouve un objet de type : function
À la clé validate, on trouve un objet de type : function
À la clé localUrl, on trouve un objet de type : function
À la clé decode, on trouve un objet de type : function
À la clé new, on trouve un objet de type : function


Étudions ces fonctions dans l’ordre où elles sont sorties :


mw.uri.parseQueryString

modifier

mw.uri.parseQueryString( s )

Décode une chaine correspondant à une requête en une table. Les clés qui dans la chaîne n'ont aucune value prendront la valeur false ; les clés répétées de multiples fois auront pour valeur des séquences ; les autres auront pour valeur des chaînes.


mw.uri.encode

modifier

mw.uri.encode( s, enctype )

Encode la chaîne s au format URL. Le type par défaut "QUERY" encode les espaces en utilisant "+", "PATH" les encode en utilisant "%20" et "WIKI" les encode en utilisant "_".

Notez que le format "WIKI" n’est pas entièrement réversible puisque les espaces et les underscores ("_") sont encodés de la même façon.


mw.uri.fullUrl

modifier

mw.uri.fullUrl( page, query )

Retourne un objet URI pour l'URL complet de cette page, avec une requête optionnelle string/table.


mw.uri.canonicalUrl

modifier

mw.uri.canonicalUrl( page, query )

Retourne un objet URI for the canonical url for a page, with optional query string/table.


mw.uri.buildQueryString

modifier

mw.uri.buildQueryString( table )

Encode une table en tant que chaîne de requête. Les clés doivent être des chaînes. Les valeurs peuvent être des chaînes, des nombres, des séquences ou false.


mw.uri.anchorEncode

modifier

mw.uri.anchorEncode( s )

Encode la chaîne pour être utilisée en tant que fragment MediaWiki.


mw.uri.validate

modifier

mw.uri.validate( table )

Validates the passed table (or URI object). Returns a boolean indicating whether the table was valid, and on failure a string explaining what problems were found.


mw.uri.localUrl

modifier

mw.uri.localUrl( page, query )

Retourne un objet URI for the local url for a page, with optional query string/table.


mw.uri.decode

modifier

mw.uri.decode( s, enctype )

Décode la chaîne "s". Le type par défaut "QUERY" décode les "+" en espaces, "PATH" décode les "%20" en espaces et "WIKI" décode les "_" en espaces.


mw.uri.new

modifier

mw.uri.new( s )

Construit un nouvel objet URI pour la chaîne ou la table passée en argument. Voir la description de l’objet URI pour les champs possibles de la table.

Objets en relation avec l’objet URI

modifier

Nous commencerons par visualiser le contenu d'un objet URI grâce au programme suivant :

local p = {}

function p.visualise(frame)
	reponse = ""
	Uri = mw.uri.new(essai)
	for index, objet in pairs(Uri) do
		reponse = reponse.."<br>À la clé "..index..", on trouve un objet de type : "..type(objet)
	end
	return reponse
end

return p


{{#invoke:Uri|visualise}} nous donne :
À la clé path, on trouve un objet de type : string
À la clé hostPort, on trouve un objet de type : string
À la clé host, on trouve un objet de type : string
À la clé validate, on trouve un objet de type : function
À la clé authority, on trouve un objet de type : string
À la clé clone, on trouve un objet de type : function
À la clé extend, on trouve un objet de type : function
À la clé parse, on trouve un objet de type : function
À la clé relativePath, on trouve un objet de type : string


Étudions ces fonctions dans l’ordre où elles sont sorties :


L'objet URI contient les champs suivants, dont certain ou tous peuvent valoir nil :

  • protocol : chaîne du protocole
  • user : nom de l'utilisateur
  • password : mot de passe
  • host : nom de la machine
  • port : numéro du port (entier)
  • path : chemin
  • query : une table comme dans mw.uri.parseQueryString
  • fragment : le fragment

Les propriétés suivantes sont également disponibles :

  • userInfo : utilisateur et mot de passe
  • hostPort : machine et numéro de port
  • authority : les deux précédents ensembles
  • queryString : version chaîne de la table de requête
  • relativePath : chemin, requête et fragment

tostring() retourne la chaîne de l'URI.

Les méthodes de l’objet URI sont :

mw.uri:parse

modifier

uri:parse( s )

Analyse une chaîne dans l’objet URI courant. Tout champ spécifié dans la chaîne sera remplacé dans l'objet, les champs non spécifiés gardent leur ancienne valeur.


mw.uri:clone

modifier

uri:clone()

Crée une copie de l’objet URI.


mw.uri:extend

modifier

uri:extend( parameters )

Intègre la table parameters dans la table de requête de l'objet.