[![Build Status](](

An URI parser trying to be strictly compatible with [RFC3986](

This project uses [ex_abnf]( with the official [uri grammar](

## Example

    iex> RFC3986.init # Call this one first to initialize the grammar.
    iex> {_matched_uri, _not_matched_input, result} = RFC3986.parse ''
    iex> result
        fragment: 'fragment',
        host: '',
        host_type: :reg_name,
        password: 'pass',
        port: 8812,
        query: 'k1%2A=v1&k2=v2',
        query_string: %{'k1%2A' => 'v1', 'k2' => 'v2'},
        scheme: 'http',
        segments: ['docs', 'stable', 'elixir', 'Enum.html'],
        type: :authority,
        userinfo: 'user:pass',
        username: 'user'

## Using it with Mix

To use it in your Mix projects, first add it as a dependency:

def deps do
  [{:ex_rfc3986, "~> 0.2.7"}]
Then run mix deps.get to install it.

## License
The source code is released under Apache 2 License.

Check [LICENSE]( file for more information.