# Initiation au Lua avec Scribunto/L'objet URI
## Librairie Uri

Nous commencerons par visualiser le contenu de cette librairie grâce au programme suivant :
{{#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

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

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

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

mw.uri.canonicalUrl( page, query )
Retourne un objet URI for the canonical url for a page, with optional query string/table.

#### mw.uri.buildQueryString

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

mw.uri.anchorEncode( s )
Encode la chaîne pour être utilisée en tant que fragment MediaWiki.

#### mw.uri.validate

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

mw.uri.localUrl( page, query )
Retourne un objet URI for the local url for a page, with optional query string/table.

#### mw.uri.decode

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

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

Nous commencerons par visualiser le contenu d'un objet URI grâce au programme suivant :
{{#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

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

uri:clone
Crée une copie de l’objet URI.

#### mw.uri:extend

uri:extend( parameters )
Intègre la table parameters dans la table de requête de l'objet.
| L'objet Title | Librairie HTML |