Leçons de niveau 10

Initiation au Lua avec Scribunto/L'objet URI

Une page de Wikiversité.
Sauter à la navigation Sauter à la recherche
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
Icon falscher Titel.svg
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 | modifier le wikicode]


Librairie Uri[modifier | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

mw.uri.anchorEncode( s )

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


mw.uri.validate[modifier | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

mw.uri.new( s )

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


Objets en relation avec l’objet URI[modifier | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

uri:clone()

Crée une copie de l’objet URI.


mw.uri:extend[modifier | modifier le wikicode]

uri:extend( parameters )

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