Current section
Files
Jump to
Current section
Files
src/argamak@axis.erl
-module(argamak@axis).
-compile(no_auto_import).
-export([name/1, size/1, rename/2, resize/2]).
-export_type([axis/0]).
-type axis() :: {axis, binary(), integer()} |
{infer, binary()} |
{a, integer()} |
{b, integer()} |
{c, integer()} |
{d, integer()} |
{e, integer()} |
{f, integer()} |
{g, integer()} |
{h, integer()} |
{i, integer()} |
{j, integer()} |
{k, integer()} |
{l, integer()} |
{m, integer()} |
{n, integer()} |
{o, integer()} |
{p, integer()} |
{q, integer()} |
{r, integer()} |
{s, integer()} |
{t, integer()} |
{u, integer()} |
{v, integer()} |
{w, integer()} |
{x, integer()} |
{y, integer()} |
{z, integer()}.
-spec name(axis()) -> binary().
name(X) ->
case X of
{axis, Name, _@1} ->
Name;
{infer, Name} ->
Name;
_@2 ->
_pipe = X,
_pipe@1 = gleam@string:inspect(_pipe),
_pipe@2 = gleam@string:first(_pipe@1),
gleam@result:unwrap(_pipe@2, <<""/utf8>>)
end.
-spec size(axis()) -> integer().
size(X) ->
case X of
{infer, _@1} ->
0;
{axis, _@2, Size} ->
Size;
{a, Size} ->
Size;
{b, Size} ->
Size;
{c, Size} ->
Size;
{d, Size} ->
Size;
{e, Size} ->
Size;
{f, Size} ->
Size;
{g, Size} ->
Size;
{h, Size} ->
Size;
{i, Size} ->
Size;
{j, Size} ->
Size;
{k, Size} ->
Size;
{l, Size} ->
Size;
{m, Size} ->
Size;
{n, Size} ->
Size;
{o, Size} ->
Size;
{p, Size} ->
Size;
{q, Size} ->
Size;
{r, Size} ->
Size;
{s, Size} ->
Size;
{t, Size} ->
Size;
{u, Size} ->
Size;
{v, Size} ->
Size;
{w, Size} ->
Size;
{x, Size} ->
Size;
{y, Size} ->
Size;
{z, Size} ->
Size
end.
-spec rename(axis(), binary()) -> axis().
rename(X, Name) ->
Size = size(X),
Is_infer = case X of
{infer, _@1} ->
true;
_@2 ->
false
end,
case Name of
<<"A"/utf8>> ->
fun(A) -> {a, A} end;
<<"B"/utf8>> ->
fun(A) -> {b, A} end;
<<"C"/utf8>> ->
fun(A) -> {c, A} end;
<<"D"/utf8>> ->
fun(A) -> {d, A} end;
<<"E"/utf8>> ->
fun(A) -> {e, A} end;
<<"F"/utf8>> ->
fun(A) -> {f, A} end;
<<"G"/utf8>> ->
fun(A) -> {g, A} end;
<<"H"/utf8>> ->
fun(A) -> {h, A} end;
<<"I"/utf8>> ->
fun(A) -> {i, A} end;
<<"J"/utf8>> ->
fun(A) -> {j, A} end;
<<"K"/utf8>> ->
fun(A) -> {k, A} end;
<<"L"/utf8>> ->
fun(A) -> {l, A} end;
<<"M"/utf8>> ->
fun(A) -> {m, A} end;
<<"N"/utf8>> ->
fun(A) -> {n, A} end;
<<"O"/utf8>> ->
fun(A) -> {o, A} end;
<<"P"/utf8>> ->
fun(A) -> {p, A} end;
<<"Q"/utf8>> ->
fun(A) -> {q, A} end;
<<"R"/utf8>> ->
fun(A) -> {r, A} end;
<<"S"/utf8>> ->
fun(A) -> {s, A} end;
<<"T"/utf8>> ->
fun(A) -> {t, A} end;
<<"U"/utf8>> ->
fun(A) -> {u, A} end;
<<"V"/utf8>> ->
fun(A) -> {v, A} end;
<<"W"/utf8>> ->
fun(A) -> {w, A} end;
<<"X"/utf8>> ->
fun(A) -> {x, A} end;
<<"Y"/utf8>> ->
fun(A) -> {y, A} end;
<<"Z"/utf8>> ->
fun(A) -> {z, A} end;
_@3 when Is_infer ->
fun(_) -> {infer, Name} end;
_@4 ->
fun(_capture) -> {axis, Name, _capture} end
end(Size).
-spec resize(axis(), integer()) -> axis().
resize(X, Size) ->
case name(X) of
<<"A"/utf8>> ->
fun(A) -> {a, A} end;
<<"B"/utf8>> ->
fun(A) -> {b, A} end;
<<"C"/utf8>> ->
fun(A) -> {c, A} end;
<<"D"/utf8>> ->
fun(A) -> {d, A} end;
<<"E"/utf8>> ->
fun(A) -> {e, A} end;
<<"F"/utf8>> ->
fun(A) -> {f, A} end;
<<"G"/utf8>> ->
fun(A) -> {g, A} end;
<<"H"/utf8>> ->
fun(A) -> {h, A} end;
<<"I"/utf8>> ->
fun(A) -> {i, A} end;
<<"J"/utf8>> ->
fun(A) -> {j, A} end;
<<"K"/utf8>> ->
fun(A) -> {k, A} end;
<<"L"/utf8>> ->
fun(A) -> {l, A} end;
<<"M"/utf8>> ->
fun(A) -> {m, A} end;
<<"N"/utf8>> ->
fun(A) -> {n, A} end;
<<"O"/utf8>> ->
fun(A) -> {o, A} end;
<<"P"/utf8>> ->
fun(A) -> {p, A} end;
<<"Q"/utf8>> ->
fun(A) -> {q, A} end;
<<"R"/utf8>> ->
fun(A) -> {r, A} end;
<<"S"/utf8>> ->
fun(A) -> {s, A} end;
<<"T"/utf8>> ->
fun(A) -> {t, A} end;
<<"U"/utf8>> ->
fun(A) -> {u, A} end;
<<"V"/utf8>> ->
fun(A) -> {v, A} end;
<<"W"/utf8>> ->
fun(A) -> {w, A} end;
<<"X"/utf8>> ->
fun(A) -> {x, A} end;
<<"Y"/utf8>> ->
fun(A) -> {y, A} end;
<<"Z"/utf8>> ->
fun(A) -> {z, A} end;
Name ->
fun(_capture) -> {axis, Name, _capture} end
end(Size).