   which takes no arguments and returns the default port
   for that particular scheme. Take a look at `URI.HTTPS` for an
   example of one of these extension modules.
+  
+  ## Examples
+  
+      iex> URI.parse("http://elixir-lang.org/")
+      URI.Info[scheme: "http", path: "/", query: nil, fragment: nil, authority: "elixir-lang.org", userinfo: nil, host: "elixir-lang.org", port: 80]
+
   """
   def parse(s) when is_binary(s) do
     # From http://tools.ietf.org/html/rfc3986#appendix-B

  URL encoded as per `encode/1`. Keys and values can be any term
  that implements the `String.Chars` protocol (i.e. can be converted
  to a binary).
  """
  def encode_query(l), do: Enum.map_join(l, "&", &pair/1)



  @doc """
  Percent-unescape a URI.
  
  ## Examples
  
      iex> URI.decode("http%3A%2F%2Felixir-lang.com")
      "http://elixir-lang.com"
  
  """
  def decode(<<?%, hex1, hex2, tail :: binary >>) do
    << bsl(hex2dec(hex1), 4) + hex2dec(hex2) >> <> decode(tail)
