Packages
lustre
5.3.2
5.7.1
5.7.0
5.6.0
5.5.2
5.5.1
5.5.0
5.4.0
5.3.5
5.3.4
5.3.3
5.3.2
5.3.1
5.3.0
5.2.1
5.2.0
5.1.1
5.1.0
5.0.3
5.0.2
5.0.1
5.0.0
4.6.4
4.6.3
4.6.2
4.6.1
4.6.0
4.5.1
4.5.0
4.4.4
4.4.3
4.4.1
4.4.0
4.3.6
4.3.5
4.3.4
4.3.3
4.3.2
4.3.1
4.3.0
4.2.6
4.2.5
4.2.4
4.2.3
4.2.2
4.2.1
4.2.0
4.1.8
4.1.7
4.1.6
4.1.5
4.1.4
4.1.3
4.1.2
4.1.1
4.1.0
4.0.0
4.0.0-rc1
4.0.0-rc.2
3.1.4
3.1.3
3.1.2
3.1.1
3.1.0
3.0.12
3.0.11
3.0.10
3.0.9
3.0.8
3.0.7
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
3.0.0-rc.8
3.0.0-rc.7
3.0.0-rc.6
3.0.0-rc.5
3.0.0-rc.4
3.0.0-rc.3
3.0.0-rc.2
3.0.0-rc.1
2.0.1
2.0.0
1.3.0
1.2.0
1.1.0
1.0.0
Create HTML templates, single page applications, Web Components, and real-time server components in Gleam!
Current section
Files
Jump to
Current section
Files
src/lustre@vdom@path.erl
-module(lustre@vdom@path).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-define(FILEPATH, "src/lustre/vdom/path.gleam").
-export([add/3, to_string/1, matches/2, event/2]).
-export_type([path/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(false).
-opaque path() :: root | {key, binary(), path()} | {index, integer(), path()}.
-file("src/lustre/vdom/path.gleam", 41).
?DOC(false).
-spec do_matches(binary(), list(binary())) -> boolean().
do_matches(Path, Candidates) ->
case Candidates of
[] ->
false;
[Candidate | Rest] ->
case gleam_stdlib:string_starts_with(Path, Candidate) of
true ->
true;
false ->
do_matches(Path, Rest)
end
end.
-file("src/lustre/vdom/path.gleam", 56).
?DOC(false).
-spec add(path(), integer(), binary()) -> path().
add(Parent, Index, Key) ->
case Key of
<<""/utf8>> ->
{index, Index, Parent};
_ ->
{key, Key, Parent}
end.
-file("src/lustre/vdom/path.gleam", 77).
?DOC(false).
-spec do_to_string(path(), list(binary())) -> binary().
do_to_string(Path, Acc) ->
case Path of
root ->
case Acc of
[] ->
<<""/utf8>>;
[_ | Segments] ->
erlang:list_to_binary(Segments)
end;
{key, Key, Parent} ->
do_to_string(Parent, [<<"\t"/utf8>>, Key | Acc]);
{index, Index, Parent@1} ->
do_to_string(
Parent@1,
[<<"\t"/utf8>>, erlang:integer_to_binary(Index) | Acc]
)
end.
-file("src/lustre/vdom/path.gleam", 73).
?DOC(false).
-spec to_string(path()) -> binary().
to_string(Path) ->
do_to_string(Path, []).
-file("src/lustre/vdom/path.gleam", 34).
?DOC(false).
-spec matches(path(), list(binary())) -> boolean().
matches(Path, Candidates) ->
case Candidates of
[] ->
false;
_ ->
do_matches(to_string(Path), Candidates)
end.
-file("src/lustre/vdom/path.gleam", 67).
?DOC(false).
-spec event(path(), binary()) -> binary().
event(Path, Event) ->
do_to_string(Path, [<<"\n"/utf8>>, Event]).