[
    {
        "name": "Erl",
        "comment": " Library for parsing and constructing URLs\n\n\n# Types\n\n@docs Url, Query\n\n\n# Parse\n\n@docs parse\n\n\n# Parse helpers\n\n@docs extractHash, extractHost, extractPath, extractProtocol, extractPort, extractQuery\n\n\n# Construct\n\n@docs new\n\n\n# Mutation helpers\n\n@docs addQuery, setQuery, removeQuery, clearQuery, appendPathSegments\n\n\n# Serialize\n\n@docs toString\n\n\n# Serialization helpers\n\n@docs queryToString\n\n\n# Other helpers\n\n@docs getQueryValuesForKey\n\n",
        "unions": [],
        "aliases": [
            {
                "name": "Query",
                "comment": " List of tuples that holds the keys and values in the query string\n",
                "args": [],
                "type": "List ( String, String )"
            },
            {
                "name": "Url",
                "comment": " Record that holds url attributes\n",
                "args": [],
                "type": "{ protocol : String, username : String, password : String, host : List String, port_ : Int, path : List String, hasLeadingSlash : Bool, hasTrailingSlash : Bool, hash : String, query : Query }"
            }
        ],
        "values": [
            {
                "name": "addQuery",
                "comment": " Adds key/value in query string\n\n    Erl.addQuery key value url\n\nThis doesn't replace existing keys, so if this is a duplicated this key is just added.\n\n",
                "type": "String -> String -> Url -> Url"
            },
            {
                "name": "appendPathSegments",
                "comment": " Append some path segments to a url\n\n    Erl.appendPathSegments [\"hello\", \"world\"] url\n\n",
                "type": "List String -> Url -> Url"
            },
            {
                "name": "clearQuery",
                "comment": " Clears the current query string\n\n    Erl.clearQuery url\n\n",
                "type": "Url -> Url"
            },
            {
                "name": "extractHash",
                "comment": " Extract the hash (hash) from the url\n",
                "type": "String -> String"
            },
            {
                "name": "extractHost",
                "comment": " Extract the host from the url\n",
                "type": "String -> String"
            },
            {
                "name": "extractPath",
                "comment": " Extract the path from the url\n",
                "type": "String -> String"
            },
            {
                "name": "extractPort",
                "comment": " Extract the port from the url\n\nIf no port is included in the url then Erl will attempt to add a default port:\n\nHttp -> 80\nHttps -> 443\nFTP -> 21\nSFTP -> 22\n\n",
                "type": "String -> Int"
            },
            {
                "name": "extractProtocol",
                "comment": " Extract the protocol from the url\n",
                "type": "String -> String"
            },
            {
                "name": "extractQuery",
                "comment": " Extract the query string from the url\n",
                "type": "String -> String"
            },
            {
                "name": "getQueryValuesForKey",
                "comment": " Gets values for a key in the query\n\n    url = Erl.parse \"?a=1&b=2&a=3\"\n\n    Erl.getQueryValuesForKey \"a\" url\n\n    == [\"1\", \"3\"]\n\n",
                "type": "String -> Url -> List String"
            },
            {
                "name": "new",
                "comment": " Generate an empty Erl.Url record\n\n    Erl.new ==\n\n    { protocol = \"\"\n    , username = \"\"\n    , password = \"\"\n    , host = []\n    , path = []\n    , hasLeadingSlash = False\n    , hasTrailingSlash = False\n    , port_ = 0\n    , hash = \"\"\n    , query = Dict.empty\n    }\n\n",
                "type": "Url"
            },
            {
                "name": "parse",
                "comment": " Parse a url string, returns an Erl.Url record\n\n    Erl.parse \"http://api.example.com/users/1#x/1?a=1\" == Erl.Url{...}\n\n",
                "type": "String -> Url"
            },
            {
                "name": "queryToString",
                "comment": " Convert to a string only the query component of an url, this includes '?'\n\n    Erl.queryToString url.query == \"?a=1&b=2\"\n\n",
                "type": "Query -> String"
            },
            {
                "name": "removeQuery",
                "comment": " Removes key from query string\n\n    Erl.removeQuery key url\n\n",
                "type": "String -> Url -> Url"
            },
            {
                "name": "setQuery",
                "comment": " Set key/value in query string, removes any existing one if necessary.\n\n    Erl.setQuery key value url\n\n",
                "type": "String -> String -> Url -> Url"
            },
            {
                "name": "toString",
                "comment": " Generate url string from an Erl.Url record\n\n    url = { protocol = \"http\",\n          , username = \"\",\n          , password = \"\",\n          , host = [\"www\", \"foo\", \"com\"],\n          , path = [\"users\", \"1\"],\n          , hasLeadingSlash = False\n          , hasTrailingSlash = False\n          , port_ = 2000,\n          , hash = \"a/b\",\n          , query = Dict.empty |> Dict.insert \"q\" \"1\" |> Dict.insert \"k\" \"2\"\n          }\n\n    Erl.toString url == \"http://www.foo.com:2000/users/1?k=2&q=1#a/b\"\n\n",
                "type": "Url -> String"
            }
        ],
        "binops": []
    }
]