Current section
Files
Jump to
Current section
Files
src/touch_grass@uri.erl
-module(touch_grass@uri).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/touch_grass/uri.gleam").
-export([uri/0, uri_to_gleam/1]).
-file("src/touch_grass/uri.gleam", 12).
-spec uri() -> eyg@analysis@type_@isomorphic:type(integer()).
uri() ->
eyg@analysis@type_@isomorphic:record(
[{<<"scheme"/utf8>>, touch_grass@http:scheme()},
{<<"host"/utf8>>, string},
{<<"port"/utf8>>, eyg@analysis@type_@isomorphic:option(string)},
{<<"path"/utf8>>, string},
{<<"query"/utf8>>,
eyg@analysis@type_@isomorphic:key_value_list(string)}]
).
-file("src/touch_grass/uri.gleam", 24).
-spec uri_to_gleam(eyg@interpreter@value:value(PCM, PCN)) -> {ok,
gleam@uri:uri()} |
{error, eyg@interpreter@break:reason(PCM, PCN)}.
uri_to_gleam(Url) ->
gleam@result:'try'(
eyg@interpreter@cast:field(
<<"scheme"/utf8>>,
fun touch_grass@http:scheme_to_gleam/1,
Url
),
fun(Scheme) ->
gleam@result:'try'(
eyg@interpreter@cast:field(
<<"host"/utf8>>,
fun eyg@interpreter@cast:as_string/1,
Url
),
fun(Host) ->
gleam@result:'try'(
eyg@interpreter@cast:field(
<<"port"/utf8>>,
fun(_capture) ->
eyg@interpreter@cast:as_option(
_capture,
fun eyg@interpreter@cast:as_integer/1
)
end,
Url
),
fun(Port) ->
gleam@result:'try'(
eyg@interpreter@cast:field(
<<"path"/utf8>>,
fun eyg@interpreter@cast:as_string/1,
Url
),
fun(Path) ->
gleam@result:'try'(
eyg@interpreter@cast:field(
<<"query"/utf8>>,
fun(_capture@1) ->
eyg@interpreter@cast:as_list_of(
_capture@1,
fun(Item) ->
gleam@result:'try'(
eyg@interpreter@cast:field(
<<"key"/utf8>>,
fun eyg@interpreter@cast:as_string/1,
Item
),
fun(Key) ->
gleam@result:'try'(
eyg@interpreter@cast:field(
<<"value"/utf8>>,
fun eyg@interpreter@cast:as_string/1,
Item
),
fun(Value) ->
{ok,
{Key,
Value}}
end
)
end
)
end
)
end,
Url
),
fun(Query) ->
Query@1 = gleam@uri:query_to_string(
Query
),
{ok,
{uri,
{some,
gleam@http:scheme_to_string(
Scheme
)},
none,
{some, Host},
Port,
Path,
{some, Query@1},
none}}
end
)
end
)
end
)
end
)
end
).