File: C:/Ruby27-x64/share/doc/ruby/html/URI.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module URI - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "./";
var index_rel_prefix = "./";
</script>
<script src="./js/navigation.js" defer></script>
<script src="./js/search.js" defer></script>
<script src="./js/search_index.js" defer></script>
<script src="./js/searcher.js" defer></script>
<script src="./js/darkfish.js" defer></script>
<link href="./css/fonts.css" rel="stylesheet">
<link href="./css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="./index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="./table_of_contents.html#pages">Pages</a>
<a href="./table_of_contents.html#classes">Classes</a>
<a href="./table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div class="nav-section">
<h3>Table of Contents</h3>
<ul class="link-list" role="directory">
<li><a href="#module-URI-label-Features">Features</a>
<li><a href="#module-URI-label-Basic+example">Basic example</a>
<li><a href="#module-URI-label-Adding+custom+URIs">Adding custom URIs</a>
<li><a href="#module-URI-label-RFC+References">RFC References</a>
<li><a href="#module-URI-label-Class+tree">Class tree</a>
<li><a href="#module-URI-label-Copyright+Info">Copyright Info</a>
</ul>
</div>
<div id="class-metadata">
<div id="includes-section" class="nav-section">
<h3>Included Modules</h3>
<ul class="link-list">
<li><a class="include" href="URI/REGEXP.html">URI::REGEXP</a>
</ul>
</div>
<div id="extends-section" class="nav-section">
<h3>Extended With Modules</h3>
<ul class="link-list">
<li><a class="extend" href="URI/Escape.html">URI::Escape</a>
</ul>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-decode_www_form">::decode_www_form</a>
<li ><a href="#method-c-decode_www_form_component">::decode_www_form_component</a>
<li ><a href="#method-c-encode_www_form">::encode_www_form</a>
<li ><a href="#method-c-encode_www_form_component">::encode_www_form_component</a>
<li ><a href="#method-c-extract">::extract</a>
<li ><a href="#method-c-join">::join</a>
<li ><a href="#method-c-open">::open</a>
<li ><a href="#method-c-parse">::parse</a>
<li ><a href="#method-c-regexp">::regexp</a>
<li ><a href="#method-c-scheme_list">::scheme_list</a>
<li ><a href="#method-c-split">::split</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="module-URI">
<h1 id="module-URI" class="module">
module URI
</h1>
<section class="description">
<p><a href="URI.html"><code>URI</code></a> is a module providing classes to handle Uniform Resource Identifiers (<a href="http://tools.ietf.org/html/rfc2396">RFC2396</a>).</p>
<h2 id="module-URI-label-Features">Features<span><a href="#module-URI-label-Features">¶</a> <a href="#top">↑</a></span></h2>
<ul><li>
<p>Uniform way of handling URIs.</p>
</li><li>
<p>Flexibility to introduce custom <a href="URI.html"><code>URI</code></a> schemes.</p>
</li><li>
<p>Flexibility to have an alternate <a href="URI/RFC2396_Parser.html"><code>URI::Parser</code></a> (or just different patterns and regexp's).</p>
</li></ul>
<h2 id="module-URI-label-Basic+example">Basic example<span><a href="#module-URI-label-Basic+example">¶</a> <a href="#top">↑</a></span></h2>
<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">'uri'</span>
<span class="ruby-identifier">uri</span> = <span class="ruby-constant">URI</span>(<span class="ruby-string">"http://foo.com/posts?id=30&limit=5#time=1305298413"</span>)
<span class="ruby-comment">#=> #<URI::HTTP http://foo.com/posts?id=30&limit=5#time=1305298413></span>
<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">scheme</span> <span class="ruby-comment">#=> "http"</span>
<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">host</span> <span class="ruby-comment">#=> "foo.com"</span>
<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">path</span> <span class="ruby-comment">#=> "/posts"</span>
<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">query</span> <span class="ruby-comment">#=> "id=30&limit=5"</span>
<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">fragment</span> <span class="ruby-comment">#=> "time=1305298413"</span>
<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-comment">#=> "http://foo.com/posts?id=30&limit=5#time=1305298413"</span>
</pre>
<h2 id="module-URI-label-Adding+custom+URIs">Adding custom URIs<span><a href="#module-URI-label-Adding+custom+URIs">¶</a> <a href="#top">↑</a></span></h2>
<pre class="ruby"><span class="ruby-keyword">module</span> <span class="ruby-constant">URI</span>
<span class="ruby-keyword">class</span> <span class="ruby-constant">RSYNC</span> <span class="ruby-operator"><</span> <span class="ruby-constant">Generic</span>
<span class="ruby-constant">DEFAULT_PORT</span> = <span class="ruby-value">873</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">@@schemes</span>[<span class="ruby-string">'RSYNC'</span>] = <span class="ruby-constant">RSYNC</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#=> URI::RSYNC</span>
<span class="ruby-constant">URI</span>.<span class="ruby-identifier">scheme_list</span>
<span class="ruby-comment">#=> {"FILE"=>URI::File, "FTP"=>URI::FTP, "HTTP"=>URI::HTTP,</span>
<span class="ruby-comment"># "HTTPS"=>URI::HTTPS, "LDAP"=>URI::LDAP, "LDAPS"=>URI::LDAPS,</span>
<span class="ruby-comment"># "MAILTO"=>URI::MailTo, "RSYNC"=>URI::RSYNC}</span>
<span class="ruby-identifier">uri</span> = <span class="ruby-constant">URI</span>(<span class="ruby-string">"rsync://rsync.foo.com"</span>)
<span class="ruby-comment">#=> #<URI::RSYNC rsync://rsync.foo.com></span>
</pre>
<h2 id="module-URI-label-RFC+References">RFC References<span><a href="#module-URI-label-RFC+References">¶</a> <a href="#top">↑</a></span></h2>
<p>A good place to view an RFC spec is <a href="http://www.ietf.org/rfc.html">www.ietf.org/rfc.html</a>.</p>
<p>Here is a list of all related RFC's:</p>
<ul><li>
<p><a href="http://tools.ietf.org/html/rfc822">RFC822</a></p>
</li><li>
<p><a href="http://tools.ietf.org/html/rfc1738">RFC1738</a></p>
</li><li>
<p><a href="http://tools.ietf.org/html/rfc2255">RFC2255</a></p>
</li><li>
<p><a href="http://tools.ietf.org/html/rfc2368">RFC2368</a></p>
</li><li>
<p><a href="http://tools.ietf.org/html/rfc2373">RFC2373</a></p>
</li><li>
<p><a href="http://tools.ietf.org/html/rfc2396">RFC2396</a></p>
</li><li>
<p><a href="http://tools.ietf.org/html/rfc2732">RFC2732</a></p>
</li><li>
<p><a href="http://tools.ietf.org/html/rfc3986">RFC3986</a></p>
</li></ul>
<h2 id="module-URI-label-Class+tree"><a href="Class.html"><code>Class</code></a> tree<span><a href="#module-URI-label-Class+tree">¶</a> <a href="#top">↑</a></span></h2>
<ul><li>
<p><a href="URI/Generic.html"><code>URI::Generic</code></a> (in uri/generic.rb)</p>
<ul><li>
<p><a href="URI/File.html"><code>URI::File</code></a> - (in uri/file.rb)</p>
</li><li>
<p><a href="URI/FTP.html"><code>URI::FTP</code></a> - (in uri/ftp.rb)</p>
</li><li>
<p><a href="URI/HTTP.html"><code>URI::HTTP</code></a> - (in uri/http.rb)</p>
<ul><li>
<p><a href="URI/HTTPS.html"><code>URI::HTTPS</code></a> - (in uri/https.rb)</p>
</li></ul>
</li><li>
<p><a href="URI/LDAP.html"><code>URI::LDAP</code></a> - (in uri/ldap.rb)</p>
<ul><li>
<p><a href="URI/LDAPS.html"><code>URI::LDAPS</code></a> - (in uri/ldaps.rb)</p>
</li></ul>
</li><li>
<p><a href="URI/MailTo.html"><code>URI::MailTo</code></a> - (in uri/mailto.rb)</p>
</li></ul>
</li><li>
<p><a href="URI/RFC2396_Parser.html"><code>URI::Parser</code></a> - (in uri/common.rb)</p>
</li><li>
<p><a href="URI/RFC2396_REGEXP.html"><code>URI::REGEXP</code></a> - (in uri/common.rb)</p>
<ul><li>
<p>URI::REGEXP::PATTERN - (in uri/common.rb)</p>
</li></ul>
</li><li>
<p>URI::Util - (in uri/common.rb)</p>
</li><li>
<p><a href="URI/Escape.html"><code>URI::Escape</code></a> - (in uri/common.rb)</p>
</li><li>
<p><a href="URI/Error.html"><code>URI::Error</code></a> - (in uri/common.rb)</p>
<ul><li>
<p><a href="URI/InvalidURIError.html"><code>URI::InvalidURIError</code></a> - (in uri/common.rb)</p>
</li><li>
<p><a href="URI/InvalidComponentError.html"><code>URI::InvalidComponentError</code></a> - (in uri/common.rb)</p>
</li><li>
<p><a href="URI/BadURIError.html"><code>URI::BadURIError</code></a> - (in uri/common.rb)</p>
</li></ul>
</li></ul>
<h2 id="module-URI-label-Copyright+Info">Copyright Info<span><a href="#module-URI-label-Copyright+Info">¶</a> <a href="#top">↑</a></span></h2>
<dl class="rdoc-list note-list"><dt>Author
<dd>
<p>Akira Yamada <akira@ruby-lang.org></p>
</dd><dt>Documentation
<dd>
<p>Akira Yamada <akira@ruby-lang.org> Dmitry V. Sabanin <sdmitry@lrn.ru> Vincent Batts <vbatts@hashbangbash.com></p>
</dd><dt>License
<dd>
<p>Copyright © 2001 akira yamada <akira@ruby-lang.org> You can redistribute it and/or modify it under the same term as Ruby.</p>
</dd><dt>Revision
<dd>
<p>$Id$</p>
</dd></dl>
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section class="constants-list">
<header>
<h3>Constants</h3>
</header>
<dl>
<dt id="DEFAULT_PARSER">DEFAULT_PARSER
<dd><p><a href="URI/RFC2396_Parser.html#method-c-new"><code>URI::Parser.new</code></a></p>
<dt id="Parser">Parser
<dd>
<dt id="REGEXP">REGEXP
<dd>
<dt id="RFC3986_PARSER">RFC3986_PARSER
<dd>
</dl>
</section>
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-decode_www_form" class="method-detail ">
<div class="method-heading">
<span class="method-name">decode_www_form</span><span
class="method-args">(str, enc=Encoding::UTF_8, separator: '&', use__charset_: false, isindex: false)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Decodes URL-encoded form data from given <code>str</code>.</p>
<p>This decodes application/x-www-form-urlencoded data and returns an array of key-value arrays.</p>
<p>This refers <a href="http://url.spec.whatwg.org/#concept-urlencoded-parser">url.spec.whatwg.org/#concept-urlencoded-parser</a>, so this supports only &-separator, and doesn't support ;-separator.</p>
<pre class="ruby"><span class="ruby-identifier">ary</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">decode_www_form</span>(<span class="ruby-string">"a=1&a=2&b=3"</span>)
<span class="ruby-identifier">ary</span> <span class="ruby-comment">#=> [['a', '1'], ['a', '2'], ['b', '3']]</span>
<span class="ruby-identifier">ary</span>.<span class="ruby-identifier">assoc</span>(<span class="ruby-string">'a'</span>).<span class="ruby-identifier">last</span> <span class="ruby-comment">#=> '1'</span>
<span class="ruby-identifier">ary</span>.<span class="ruby-identifier">assoc</span>(<span class="ruby-string">'b'</span>).<span class="ruby-identifier">last</span> <span class="ruby-comment">#=> '3'</span>
<span class="ruby-identifier">ary</span>.<span class="ruby-identifier">rassoc</span>(<span class="ruby-string">'a'</span>).<span class="ruby-identifier">last</span> <span class="ruby-comment">#=> '2'</span>
<span class="ruby-constant">Hash</span>[<span class="ruby-identifier">ary</span>] <span class="ruby-comment">#=> {"a"=>"2", "b"=>"3"}</span>
</pre>
<p>See <a href="URI.html#method-c-decode_www_form_component"><code>URI.decode_www_form_component</code></a>, <a href="URI.html#method-c-encode_www_form"><code>URI.encode_www_form</code></a>.</p>
<div class="method-source-code" id="decode_www_form-source">
<pre><span class="ruby-comment"># File lib/uri/common.rb, line 454</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">decode_www_form</span>(<span class="ruby-identifier">str</span>, <span class="ruby-identifier">enc</span>=<span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">UTF_8</span>, <span class="ruby-value">separator:</span> <span class="ruby-string">'&'</span>, <span class="ruby-value">use__charset_:</span> <span class="ruby-keyword">false</span>, <span class="ruby-value">isindex:</span> <span class="ruby-keyword">false</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"the input of #{self.name}.#{__method__} must be ASCII only string"</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">ascii_only?</span>
<span class="ruby-identifier">ary</span> = []
<span class="ruby-keyword">return</span> <span class="ruby-identifier">ary</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">empty?</span>
<span class="ruby-identifier">enc</span> = <span class="ruby-constant">Encoding</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">enc</span>)
<span class="ruby-identifier">str</span>.<span class="ruby-identifier">b</span>.<span class="ruby-identifier">each_line</span>(<span class="ruby-identifier">separator</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">string</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">string</span>.<span class="ruby-identifier">chomp!</span>(<span class="ruby-identifier">separator</span>)
<span class="ruby-identifier">key</span>, <span class="ruby-identifier">sep</span>, <span class="ruby-identifier">val</span> = <span class="ruby-identifier">string</span>.<span class="ruby-identifier">partition</span>(<span class="ruby-string">'='</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">isindex</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">sep</span>.<span class="ruby-identifier">empty?</span>
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">key</span>
<span class="ruby-identifier">key</span> = <span class="ruby-string">+''</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">isindex</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">use__charset_</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">key</span> <span class="ruby-operator">==</span> <span class="ruby-string">'_charset_'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">e</span> = <span class="ruby-identifier">get_encoding</span>(<span class="ruby-identifier">val</span>)
<span class="ruby-identifier">enc</span> = <span class="ruby-identifier">e</span>
<span class="ruby-identifier">use__charset_</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">key</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/\+|%\h\h/</span>, <span class="ruby-constant">TBLDECWWWCOMP_</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">val</span>
<span class="ruby-identifier">val</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/\+|%\h\h/</span>, <span class="ruby-constant">TBLDECWWWCOMP_</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">val</span> = <span class="ruby-string">+''</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">ary</span> <span class="ruby-operator"><<</span> [<span class="ruby-identifier">key</span>, <span class="ruby-identifier">val</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">ary</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">k</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-identifier">enc</span>)
<span class="ruby-identifier">k</span>.<span class="ruby-identifier">scrub!</span>
<span class="ruby-identifier">v</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-identifier">enc</span>)
<span class="ruby-identifier">v</span>.<span class="ruby-identifier">scrub!</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">ary</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-decode_www_form_component" class="method-detail ">
<div class="method-heading">
<span class="method-name">decode_www_form_component</span><span
class="method-args">(str, enc=Encoding::UTF_8)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Decodes given <code>str</code> of URL-encoded form data.</p>
<p>This decodes + to SP.</p>
<p>See <a href="URI.html#method-c-encode_www_form_component"><code>URI.encode_www_form_component</code></a>, <a href="URI.html#method-c-decode_www_form"><code>URI.decode_www_form</code></a>.</p>
<div class="method-source-code" id="decode_www_form_component-source">
<pre><span class="ruby-comment"># File lib/uri/common.rb, line 386</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">decode_www_form_component</span>(<span class="ruby-identifier">str</span>, <span class="ruby-identifier">enc</span>=<span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">UTF_8</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"invalid %-encoding (#{str})"</span> <span class="ruby-keyword">if</span> <span class="ruby-regexp">/%(?!\h\h)/</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">str</span>
<span class="ruby-identifier">str</span>.<span class="ruby-identifier">b</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/\+|%\h\h/</span>, <span class="ruby-constant">TBLDECWWWCOMP_</span>).<span class="ruby-identifier">force_encoding</span>(<span class="ruby-identifier">enc</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-encode_www_form" class="method-detail ">
<div class="method-heading">
<span class="method-name">encode_www_form</span><span
class="method-args">(enum, enc=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Generates URL-encoded form data from given <code>enum</code>.</p>
<p>This generates application/x-www-form-urlencoded data defined in HTML5 from given an <a href="Enumerable.html"><code>Enumerable</code></a> object.</p>
<p>This internally uses <a href="URI.html#method-c-encode_www_form_component"><code>URI.encode_www_form_component(str)</code></a>.</p>
<p>This method doesn't convert the encoding of given items, so convert them before calling this method if you want to send data as other than original encoding or mixed encoding data. (Strings which are encoded in an HTML5 ASCII incompatible encoding are converted to UTF-8.)</p>
<p>This method doesn't handle files. When you send a file, use multipart/form-data.</p>
<p>This refers <a href="http://url.spec.whatwg.org/#concept-urlencoded-serializer">url.spec.whatwg.org/#concept-urlencoded-serializer</a></p>
<pre class="ruby"><span class="ruby-constant">URI</span>.<span class="ruby-identifier">encode_www_form</span>([[<span class="ruby-string">"q"</span>, <span class="ruby-string">"ruby"</span>], [<span class="ruby-string">"lang"</span>, <span class="ruby-string">"en"</span>]])
<span class="ruby-comment">#=> "q=ruby&lang=en"</span>
<span class="ruby-constant">URI</span>.<span class="ruby-identifier">encode_www_form</span>(<span class="ruby-string">"q"</span> <span class="ruby-operator">=></span> <span class="ruby-string">"ruby"</span>, <span class="ruby-string">"lang"</span> <span class="ruby-operator">=></span> <span class="ruby-string">"en"</span>)
<span class="ruby-comment">#=> "q=ruby&lang=en"</span>
<span class="ruby-constant">URI</span>.<span class="ruby-identifier">encode_www_form</span>(<span class="ruby-string">"q"</span> <span class="ruby-operator">=></span> [<span class="ruby-string">"ruby"</span>, <span class="ruby-string">"perl"</span>], <span class="ruby-string">"lang"</span> <span class="ruby-operator">=></span> <span class="ruby-string">"en"</span>)
<span class="ruby-comment">#=> "q=ruby&q=perl&lang=en"</span>
<span class="ruby-constant">URI</span>.<span class="ruby-identifier">encode_www_form</span>([[<span class="ruby-string">"q"</span>, <span class="ruby-string">"ruby"</span>], [<span class="ruby-string">"q"</span>, <span class="ruby-string">"perl"</span>], [<span class="ruby-string">"lang"</span>, <span class="ruby-string">"en"</span>]])
<span class="ruby-comment">#=> "q=ruby&q=perl&lang=en"</span>
</pre>
<p>See <a href="URI.html#method-c-encode_www_form_component"><code>URI.encode_www_form_component</code></a>, <a href="URI.html#method-c-decode_www_form"><code>URI.decode_www_form</code></a>.</p>
<div class="method-source-code" id="encode_www_form-source">
<pre><span class="ruby-comment"># File lib/uri/common.rb, line 418</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">encode_www_form</span>(<span class="ruby-identifier">enum</span>, <span class="ruby-identifier">enc</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">enum</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">nil?</span>
<span class="ruby-identifier">encode_www_form_component</span>(<span class="ruby-identifier">k</span>, <span class="ruby-identifier">enc</span>)
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:to_ary</span>)
<span class="ruby-identifier">v</span>.<span class="ruby-identifier">to_ary</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">w</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">str</span> = <span class="ruby-identifier">encode_www_form_component</span>(<span class="ruby-identifier">k</span>, <span class="ruby-identifier">enc</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">w</span>.<span class="ruby-identifier">nil?</span>
<span class="ruby-identifier">str</span> <span class="ruby-operator"><<</span> <span class="ruby-string">'='</span>
<span class="ruby-identifier">str</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">encode_www_form_component</span>(<span class="ruby-identifier">w</span>, <span class="ruby-identifier">enc</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">'&'</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">str</span> = <span class="ruby-identifier">encode_www_form_component</span>(<span class="ruby-identifier">k</span>, <span class="ruby-identifier">enc</span>)
<span class="ruby-identifier">str</span> <span class="ruby-operator"><<</span> <span class="ruby-string">'='</span>
<span class="ruby-identifier">str</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">encode_www_form_component</span>(<span class="ruby-identifier">v</span>, <span class="ruby-identifier">enc</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">'&'</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-encode_www_form_component" class="method-detail ">
<div class="method-heading">
<span class="method-name">encode_www_form_component</span><span
class="method-args">(str, enc=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Encodes given <code>str</code> to URL-encoded form data.</p>
<p>This method doesn't convert *, -, ., 0-9, A-Z, _, a-z, but does convert SP (ASCII space) to + and converts others to %XX.</p>
<p>If <code>enc</code> is given, convert <code>str</code> to the encoding before percent encoding.</p>
<p>This is an implementation of <a href="http://www.w3.org/TR/2013/CR-html5-20130806/forms.html#url-encoded-form-data">www.w3.org/TR/2013/CR-html5-20130806/forms.html#url-encoded-form-data</a>.</p>
<p>See <a href="URI.html#method-c-decode_www_form_component"><code>URI.decode_www_form_component</code></a>, <a href="URI.html#method-c-encode_www_form"><code>URI.encode_www_form</code></a>.</p>
<div class="method-source-code" id="encode_www_form_component-source">
<pre><span class="ruby-comment"># File lib/uri/common.rb, line 368</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">encode_www_form_component</span>(<span class="ruby-identifier">str</span>, <span class="ruby-identifier">enc</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">str</span> = <span class="ruby-identifier">str</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">dup</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">encoding</span> <span class="ruby-operator">!=</span> <span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">ASCII_8BIT</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">enc</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">enc</span> <span class="ruby-operator">!=</span> <span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">ASCII_8BIT</span>
<span class="ruby-identifier">str</span>.<span class="ruby-identifier">encode!</span>(<span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">UTF_8</span>, <span class="ruby-value">invalid:</span> <span class="ruby-value">:replace</span>, <span class="ruby-value">undef:</span> <span class="ruby-value">:replace</span>)
<span class="ruby-identifier">str</span>.<span class="ruby-identifier">encode!</span>(<span class="ruby-identifier">enc</span>, <span class="ruby-value">fallback:</span> <span class="ruby-operator">-></span>(<span class="ruby-identifier">x</span>){<span class="ruby-node">"&##{x.ord};"</span>})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">str</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">ASCII_8BIT</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">str</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/[^*\-.0-9A-Z_a-z]/</span>, <span class="ruby-constant">TBLENCWWWCOMP_</span>)
<span class="ruby-identifier">str</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">US_ASCII</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-extract" class="method-detail ">
<div class="method-heading">
<span class="method-name">extract</span><span
class="method-args">(str, schemes = nil, &block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<h2 id="method-c-extract-label-Synopsis">Synopsis<span><a href="#method-c-extract-label-Synopsis">¶</a> <a href="#top">↑</a></span></h2>
<pre>URI::extract(str[, schemes][,&blk])</pre>
<h2 id="method-c-extract-label-Args">Args<span><a href="#method-c-extract-label-Args">¶</a> <a href="#top">↑</a></span></h2>
<dl class="rdoc-list note-list"><dt><code>str</code>
<dd>
<p><a href="String.html"><code>String</code></a> to extract URIs from.</p>
</dd><dt><code>schemes</code>
<dd>
<p>Limit <a href="URI.html"><code>URI</code></a> matching to specific schemes.</p>
</dd></dl>
<h2 id="method-c-extract-label-Description">Description<span><a href="#method-c-extract-label-Description">¶</a> <a href="#top">↑</a></span></h2>
<p>Extracts URIs from a string. If block given, iterates through all matched URIs. Returns nil if block given or array with matches.</p>
<h2 id="method-c-extract-label-Usage">Usage<span><a href="#method-c-extract-label-Usage">¶</a> <a href="#top">↑</a></span></h2>
<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">"uri"</span>
<span class="ruby-constant">URI</span>.<span class="ruby-identifier">extract</span>(<span class="ruby-string">"text here http://foo.example.org/bla and here mailto:test@example.com and here also."</span>)
<span class="ruby-comment"># => ["http://foo.example.com/bla", "mailto:test@example.com"]</span>
</pre>
<div class="method-source-code" id="extract-source">
<pre><span class="ruby-comment"># File lib/uri/common.rb, line 298</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">extract</span>(<span class="ruby-identifier">str</span>, <span class="ruby-identifier">schemes</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
<span class="ruby-identifier">warn</span> <span class="ruby-string">"URI.extract is obsolete"</span>, <span class="ruby-value">uplevel:</span> <span class="ruby-value">1</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">$VERBOSE</span>
<span class="ruby-constant">DEFAULT_PARSER</span>.<span class="ruby-identifier">extract</span>(<span class="ruby-identifier">str</span>, <span class="ruby-identifier">schemes</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-join" class="method-detail ">
<div class="method-heading">
<span class="method-name">join</span><span
class="method-args">(*str)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<h2 id="method-c-join-label-Synopsis">Synopsis<span><a href="#method-c-join-label-Synopsis">¶</a> <a href="#top">↑</a></span></h2>
<pre>URI::join(str[, str, ...])</pre>
<h2 id="method-c-join-label-Args">Args<span><a href="#method-c-join-label-Args">¶</a> <a href="#top">↑</a></span></h2>
<dl class="rdoc-list note-list"><dt><code>str</code>
<dd>
<p>String(s) to work with, will be converted to RFC3986 URIs before merging.</p>
</dd></dl>
<h2 id="method-c-join-label-Description">Description<span><a href="#method-c-join-label-Description">¶</a> <a href="#top">↑</a></span></h2>
<p>Joins URIs.</p>
<h2 id="method-c-join-label-Usage">Usage<span><a href="#method-c-join-label-Usage">¶</a> <a href="#top">↑</a></span></h2>
<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">'uri'</span>
<span class="ruby-constant">URI</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">"http://example.com/"</span>,<span class="ruby-string">"main.rbx"</span>)
<span class="ruby-comment"># => #<URI::HTTP http://example.com/main.rbx></span>
<span class="ruby-constant">URI</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">'http://example.com'</span>, <span class="ruby-string">'foo'</span>)
<span class="ruby-comment"># => #<URI::HTTP http://example.com/foo></span>
<span class="ruby-constant">URI</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">'http://example.com'</span>, <span class="ruby-string">'/foo'</span>, <span class="ruby-string">'/bar'</span>)
<span class="ruby-comment"># => #<URI::HTTP http://example.com/bar></span>
<span class="ruby-constant">URI</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">'http://example.com'</span>, <span class="ruby-string">'/foo'</span>, <span class="ruby-string">'bar'</span>)
<span class="ruby-comment"># => #<URI::HTTP http://example.com/bar></span>
<span class="ruby-constant">URI</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">'http://example.com'</span>, <span class="ruby-string">'/foo/'</span>, <span class="ruby-string">'bar'</span>)
<span class="ruby-comment"># => #<URI::HTTP http://example.com/foo/bar></span>
</pre>
<div class="method-source-code" id="join-source">
<pre><span class="ruby-comment"># File lib/uri/common.rb, line 270</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">join</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">str</span>)
<span class="ruby-constant">RFC3986_PARSER</span>.<span class="ruby-identifier">join</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">str</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-open" class="method-detail ">
<div class="method-heading">
<span class="method-name">open</span><span
class="method-args">(name, *rest, &block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Allows the opening of various resources including URIs.</p>
<p>If the first argument responds to the 'open' method, 'open' is called on it with the rest of the arguments.</p>
<p>If the first argument is a string that begins with <code>(protocol)://<code>, it is parsed by <a href="URI.html#method-c-parse"><code>URI.parse</code></a>. If the parsed object responds to the 'open' method, 'open' is called on it with the rest of the arguments.</p>
<p>Otherwise, <a href="Kernel.html#method-i-open"><code>Kernel#open</code></a> is called.</p>
<p><a href="OpenURI/OpenRead.html#method-i-open"><code>OpenURI::OpenRead#open</code></a> provides <a href="OpenURI/OpenRead.html#method-i-open"><code>URI::HTTP#open</code></a>, <a href="OpenURI/OpenRead.html#method-i-open"><code>URI::HTTPS#open</code></a> and <a href="OpenURI/OpenRead.html#method-i-open"><code>URI::FTP#open</code></a>, <a href="Kernel.html#method-i-open"><code>Kernel#open</code></a>.</p>
<p>We can accept URIs and strings that begin with http://, https:// and ftp://. In these cases, the opened file object is extended by <a href="OpenURI/Meta.html"><code>OpenURI::Meta</code></a>.</p>
<div class="method-source-code" id="open-source">
<pre><span class="ruby-comment"># File lib/open-uri.rb, line 44</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">open</span>(<span class="ruby-identifier">name</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">rest</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:open</span>)
<span class="ruby-identifier">name</span>.<span class="ruby-identifier">open</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">rest</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:to_str</span>) <span class="ruby-operator">&&</span>
<span class="ruby-regexp">%r{\A[A-Za-z][A-Za-z0-9+\-\.]*://}</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">&&</span>
(<span class="ruby-identifier">uri</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">name</span>)).<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:open</span>)
<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">open</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">rest</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">open_uri_original_open</span>(<span class="ruby-identifier">name</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">rest</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
<span class="ruby-comment"># After Kernel#open override is removed:</span>
<span class="ruby-comment">#super</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-parse" class="method-detail ">
<div class="method-heading">
<span class="method-name">parse</span><span
class="method-args">(uri)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<h2 id="method-c-parse-label-Synopsis">Synopsis<span><a href="#method-c-parse-label-Synopsis">¶</a> <a href="#top">↑</a></span></h2>
<pre class="ruby"><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-identifier">parse</span>(<span class="ruby-identifier">uri_str</span>)
</pre>
<h2 id="method-c-parse-label-Args">Args<span><a href="#method-c-parse-label-Args">¶</a> <a href="#top">↑</a></span></h2>
<dl class="rdoc-list note-list"><dt><code>uri_str</code>
<dd>
<p><a href="String.html"><code>String</code></a> with <a href="URI.html"><code>URI</code></a>.</p>
</dd></dl>
<h2 id="method-c-parse-label-Description">Description<span><a href="#method-c-parse-label-Description">¶</a> <a href="#top">↑</a></span></h2>
<p>Creates one of the URI's subclasses instance from the string.</p>
<h2 id="method-c-parse-label-Raises">Raises<span><a href="#method-c-parse-label-Raises">¶</a> <a href="#top">↑</a></span></h2>
<dl class="rdoc-list note-list"><dt><a href="URI/InvalidURIError.html"><code>URI::InvalidURIError</code></a>
<dd>
<p>Raised if <a href="URI.html"><code>URI</code></a> given is not a correct one.</p>
</dd></dl>
<h2 id="method-c-parse-label-Usage">Usage<span><a href="#method-c-parse-label-Usage">¶</a> <a href="#top">↑</a></span></h2>
<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">'uri'</span>
<span class="ruby-identifier">uri</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">"http://www.ruby-lang.org/"</span>)
<span class="ruby-comment"># => #<URI::HTTP http://www.ruby-lang.org/></span>
<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">scheme</span>
<span class="ruby-comment"># => "http"</span>
<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">host</span>
<span class="ruby-comment"># => "www.ruby-lang.org"</span>
</pre>
<p>It's recommended to first ::escape the provided <code>uri_str</code> if there are any invalid <a href="URI.html"><code>URI</code></a> characters.</p>
<div class="method-source-code" id="parse-source">
<pre><span class="ruby-comment"># File lib/uri/common.rb, line 233</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">parse</span>(<span class="ruby-identifier">uri</span>)
<span class="ruby-constant">RFC3986_PARSER</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">uri</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-regexp" class="method-detail ">
<div class="method-heading">
<span class="method-name">regexp</span><span
class="method-args">(schemes = nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<h2 id="method-c-regexp-label-Synopsis">Synopsis<span><a href="#method-c-regexp-label-Synopsis">¶</a> <a href="#top">↑</a></span></h2>
<pre class="ruby"><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-identifier">regexp</span>([<span class="ruby-identifier">match_schemes</span>])
</pre>
<h2 id="method-c-regexp-label-Args">Args<span><a href="#method-c-regexp-label-Args">¶</a> <a href="#top">↑</a></span></h2>
<dl class="rdoc-list note-list"><dt><code>match_schemes</code>
<dd>
<p><a href="Array.html"><code>Array</code></a> of schemes. If given, resulting regexp matches to URIs whose scheme is one of the match_schemes.</p>
</dd></dl>
<h2 id="method-c-regexp-label-Description">Description<span><a href="#method-c-regexp-label-Description">¶</a> <a href="#top">↑</a></span></h2>
<p>Returns a <a href="Regexp.html"><code>Regexp</code></a> object which matches to URI-like strings. The <a href="Regexp.html"><code>Regexp</code></a> object returned by this method includes arbitrary number of capture group (parentheses). Never rely on it's number.</p>
<h2 id="method-c-regexp-label-Usage">Usage<span><a href="#method-c-regexp-label-Usage">¶</a> <a href="#top">↑</a></span></h2>
<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">'uri'</span>
<span class="ruby-comment"># extract first URI from html_string</span>
<span class="ruby-identifier">html_string</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-constant">URI</span>.<span class="ruby-identifier">regexp</span>)
<span class="ruby-comment"># remove ftp URIs</span>
<span class="ruby-identifier">html_string</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-constant">URI</span>.<span class="ruby-identifier">regexp</span>([<span class="ruby-string">'ftp'</span>]), <span class="ruby-string">''</span>)
<span class="ruby-comment"># You should not rely on the number of parentheses</span>
<span class="ruby-identifier">html_string</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-constant">URI</span>.<span class="ruby-identifier">regexp</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-operator">*</span><span class="ruby-identifier">matches</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">p</span> <span class="ruby-node">$&</span>
<span class="ruby-keyword">end</span>
</pre>
<div class="method-source-code" id="regexp-source">
<pre><span class="ruby-comment"># File lib/uri/common.rb, line 335</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">regexp</span>(<span class="ruby-identifier">schemes</span> = <span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">warn</span> <span class="ruby-string">"URI.regexp is obsolete"</span>, <span class="ruby-value">uplevel:</span> <span class="ruby-value">1</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">$VERBOSE</span>
<span class="ruby-constant">DEFAULT_PARSER</span>.<span class="ruby-identifier">make_regexp</span>(<span class="ruby-identifier">schemes</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-scheme_list" class="method-detail ">
<div class="method-heading">
<span class="method-name">scheme_list</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Returns a <a href="Hash.html"><code>Hash</code></a> of the defined schemes.</p>
<div class="method-source-code" id="scheme_list-source">
<pre><span class="ruby-comment"># File lib/uri/common.rb, line 144</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">scheme_list</span>
<span class="ruby-identifier">@@schemes</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-split" class="method-detail ">
<div class="method-heading">
<span class="method-name">split</span><span
class="method-args">(uri)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<h2 id="method-c-split-label-Synopsis">Synopsis<span><a href="#method-c-split-label-Synopsis">¶</a> <a href="#top">↑</a></span></h2>
<pre class="ruby"><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-identifier">split</span>(<span class="ruby-identifier">uri</span>)
</pre>
<h2 id="method-c-split-label-Args">Args<span><a href="#method-c-split-label-Args">¶</a> <a href="#top">↑</a></span></h2>
<dl class="rdoc-list note-list"><dt><code>uri</code>
<dd>
<p><a href="String.html"><code>String</code></a> with <a href="URI.html"><code>URI</code></a>.</p>
</dd></dl>
<h2 id="method-c-split-label-Description">Description<span><a href="#method-c-split-label-Description">¶</a> <a href="#top">↑</a></span></h2>
<p>Splits the string on following parts and returns array with result:</p>
<ul><li>
<p>Scheme</p>
</li><li>
<p>Userinfo</p>
</li><li>
<p>Host</p>
</li><li>
<p>Port</p>
</li><li>
<p>Registry</p>
</li><li>
<p>Path</p>
</li><li>
<p>Opaque</p>
</li><li>
<p>Query</p>
</li><li>
<p>Fragment</p>
</li></ul>
<h2 id="method-c-split-label-Usage">Usage<span><a href="#method-c-split-label-Usage">¶</a> <a href="#top">↑</a></span></h2>
<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">'uri'</span>
<span class="ruby-constant">URI</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">"http://www.ruby-lang.org/"</span>)
<span class="ruby-comment"># => ["http", nil, "www.ruby-lang.org", nil, nil, "/", nil, nil, nil]</span>
</pre>
<div class="method-source-code" id="split-source">
<pre><span class="ruby-comment"># File lib/uri/common.rb, line 196</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">split</span>(<span class="ruby-identifier">uri</span>)
<span class="ruby-constant">RFC3986_PARSER</span>.<span class="ruby-identifier">split</span>(<span class="ruby-identifier">uri</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.2.1.1.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>