Initiation au Lua avec Scribunto/L'objet URI
L'objet URI
modifierLibrairie Uri
modifierNous 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
modifiermw.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
modifiermw.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
modifiermw.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
modifiermw.uri.canonicalUrl( page, query )
Retourne un objet URI for the canonical url for a page, with optional query string/table.
mw.uri.buildQueryString
modifiermw.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
modifiermw.uri.anchorEncode( s )
Encode la chaîne pour être utilisée en tant que fragment MediaWiki.
mw.uri.validate
modifiermw.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
modifiermw.uri.localUrl( page, query )
Retourne un objet URI for the local url for a page, with optional query string/table.
mw.uri.decode
modifiermw.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
modifiermw.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
modifierNous 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
modifieruri: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
modifieruri:clone()
Crée une copie de l’objet URI.
mw.uri:extend
modifieruri:extend( parameters )
Intègre la table parameters dans la table de requête de l'objet.