Files
lespiedsdanslecode/posts/2007/2007-03-04-url-parsing-with-ruby.md
T
Yannick Francois 29d6558b4e changement de procédé
dans une orientation où le thème change pour toutes les pages
2019-02-23 23:53:36 +01:00

53 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
layout: post
title: URL Parsing with Ruby
date: 2007-03-04
---
Encore une fois [Ruby](http://ruby-lang.org) me confirme que cest un langage que jadore.
Pour divers raison, il arrive parfois que lon veuille manipuler une URL. Fourni sous forme complête, cesst pratique, ça peut servir. Mais il arrive que lon ai besoin de *parser* cette URL pour en extraire le domaine, sont extension... Jai voulu me lancer dans une [expression régulière \[ou Expression Rationnelles Wikipedia\]](http://fr.wikipedia.org/wiki/Expressions_rationnelles) pour analyser une URL...
Quelle idiotie ! Il faut toujours se renseigner avant, parcourir lAPI. Et justement, jai fouillé un peu. Et voilà, dans la librairie du “noyau” de ruby, on trouve un Objet fait pour: [URI](http://www.ruby-doc.org/core/classes/URI.html#M004633).
Du coup, au lieu de faire une expression régulière, on applique simplement quelque méthode de lobjet URI.
<pre>
{% highlight ruby %}
mon_url = "http://www.typouype.org/xml/rss20/feed.xml/"
mon_uri = URI.parse(mon_url)
p mon_uri.host
# => "www.typouype.org"
{% endhighlight %}
</pre>
Bon ça cest gentil, mais jen veux plus moi ! Qua cela ne tienne, une méthode fourni tout ce qui manquerais:
<pre>
{% highlight ruby %}
p URI.split("http://www.ruby-lang.org/")
# => ["http", nil, "www.ruby-lang.org",
# nil, nil, "/", nil, nil, nil]
{% endhighlight %}
</pre>
Et bien voilà :-). Pour info voici les éléments renvoyé par le tableau:
* Scheme
* Userinfo
* Host
* Port
* Registry
* Path
* Opaque
* Query
* Fragment
Cest presque dommage que le tableau ne ssoit pas un Hash avec cet nom d’élément en guise de clé, avec les Clé défini comme attribut de class... (Quoi ? faut bien chipoter un peu non :-) )
*Désolé pour le titre en anglais, mais souvent quand je parle de “code” je préfère utiliser langlais qui est, je trouve, plus approprié.
*