Files
lespiedsdanslecode/content/posts/2007/2007-03-04-url-parsing-with-ruby.html
T

67 lines
3.7 KiB
HTML
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.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta name="generator" content="Hugo 0.22.1" />
<meta charset="utf-8">
<title>Yannick François - Elsif.fr</title>
<meta name="DC.title" content="elsif.fr, site de Yannick François aka yaf (ou ya_f)."/>
<meta name="description" content="Le site de Yannick François. Développeur Senior, Responsable Produit, Pédagogue. Je travail chez Scopyleft"/>
<meta name="keywords" content="code, développement, programmation, apprentissage, apprendre, lean, agile, logiciel, tdd, objet, refactoring, libre, creative commons, linux, unix"/>
<meta name="author" content="Yannick François, https://elsif.fr"/>
<meta name="designer" content="Yannick François, https://elsif.fr"/>
<meta name="geo.placename" content="Poissy, Ile de france, France"/>
<meta name="robots" content="index,follow" />
<meta name="language" content="French" />
<meta name="HandheldFriendly" content="True" />
<meta name="MobileOptimized" content="320" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0" />
<link rel="index" title="Yannick François / Développeur / Pédagogue" href="index.html" />
<link rel="stylesheet" href="/css/201912-elsif.css" media="all"/>
<link rel="alternate" type="application/rss" href="/feed.xml" title="elsif.fr/feed" />
</head>
<body>
<main>
<p>Encore une fois <a href="http://ruby-lang.org">Ruby</a> me confirme que c’est un langage que j’adore.</p>
<p>Pour divers raison, il arrive parfois que l’on veuille manipuler une URL. Fourni sous forme complête, c’esst pratique, ça peut servir. Mais il arrive que l’on ai besoin de <em>parser</em> cette URL pour en extraire le domaine, sont extension… J’ai voulu me lancer dans une <a href="http://fr.wikipedia.org/wiki/Expressions_rationnelles">expression régulière [ou Expression Rationnelles Wikipedia]</a> pour analyser une URL…</p>
<p>Quelle idiotie ! Il faut toujours se renseigner avant, parcourir l’API. Et justement, j’ai fouillé un peu. Et voilà, dans la librairie du “noyau” de ruby, on trouve un Objet fait pour: <a href="http://www.ruby-doc.org/core/classes/URI.html#M004633">URI</a>.</p>
<p>Du coup, au lieu de faire une expression régulière, on applique simplement quelque méthode de l’objet URI.</p>
<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>
<p>Bon ça c’est gentil, mais j’en veux plus moi ! Qu’a cela ne tienne, une méthode fourni tout ce qui manquerais:</p>
<pre>
{% highlight ruby %}
p URI.split("http://www.ruby-lang.org/")
# => ["http", nil, "www.ruby-lang.org",
# nil, nil, "/", nil, nil, nil]
{% endhighlight %}
</pre>
<p>Et bien voilà :-). Pour info voici les éléments renvoyé par le tableau:</p>
<ul>
<li>Scheme</li>
<li>Userinfo</li>
<li>Host</li>
<li>Port</li>
<li>Registry</li>
<li>Path</li>
<li>Opaque</li>
<li>Query</li>
<li>Fragment</li>
</ul>
<p>C’est 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 :-) )</p>
<p><em>Désolé pour le titre en anglais, mais souvent quand je parle de “code” je préfère utiliser l’anglais qui est, je trouve, plus approprié. </em></p>
</main>
<footer>
<ul>
</ul>
</footer>
</body>
</html>