Current section

Files

Jump to
argamak src argamak@axis.erl
Raw

src/argamak@axis.erl

-module(argamak@axis).
-compile([no_auto_import, nowarn_unused_vars]).
-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, _} ->
Name;
{infer, Name} ->
Name;
_ ->
_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, _} ->
0;
{axis, _, 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, _} ->
true;
_ ->
false
end,
X@1 = case Name of
<<"A"/utf8>> ->
fun(Field@0) -> {a, Field@0} end;
<<"B"/utf8>> ->
fun(Field@0) -> {b, Field@0} end;
<<"C"/utf8>> ->
fun(Field@0) -> {c, Field@0} end;
<<"D"/utf8>> ->
fun(Field@0) -> {d, Field@0} end;
<<"E"/utf8>> ->
fun(Field@0) -> {e, Field@0} end;
<<"F"/utf8>> ->
fun(Field@0) -> {f, Field@0} end;
<<"G"/utf8>> ->
fun(Field@0) -> {g, Field@0} end;
<<"H"/utf8>> ->
fun(Field@0) -> {h, Field@0} end;
<<"I"/utf8>> ->
fun(Field@0) -> {i, Field@0} end;
<<"J"/utf8>> ->
fun(Field@0) -> {j, Field@0} end;
<<"K"/utf8>> ->
fun(Field@0) -> {k, Field@0} end;
<<"L"/utf8>> ->
fun(Field@0) -> {l, Field@0} end;
<<"M"/utf8>> ->
fun(Field@0) -> {m, Field@0} end;
<<"N"/utf8>> ->
fun(Field@0) -> {n, Field@0} end;
<<"O"/utf8>> ->
fun(Field@0) -> {o, Field@0} end;
<<"P"/utf8>> ->
fun(Field@0) -> {p, Field@0} end;
<<"Q"/utf8>> ->
fun(Field@0) -> {q, Field@0} end;
<<"R"/utf8>> ->
fun(Field@0) -> {r, Field@0} end;
<<"S"/utf8>> ->
fun(Field@0) -> {s, Field@0} end;
<<"T"/utf8>> ->
fun(Field@0) -> {t, Field@0} end;
<<"U"/utf8>> ->
fun(Field@0) -> {u, Field@0} end;
<<"V"/utf8>> ->
fun(Field@0) -> {v, Field@0} end;
<<"W"/utf8>> ->
fun(Field@0) -> {w, Field@0} end;
<<"X"/utf8>> ->
fun(Field@0) -> {x, Field@0} end;
<<"Y"/utf8>> ->
fun(Field@0) -> {y, Field@0} end;
<<"Z"/utf8>> ->
fun(Field@0) -> {z, Field@0} end;
_ when Is_infer ->
fun(_) -> {infer, Name} end;
_ ->
fun(_capture) -> {axis, Name, _capture} end
end,
X@1(Size).
-spec resize(axis(), integer()) -> axis().
resize(X, Size) ->
X@1 = case name(X) of
<<"A"/utf8>> ->
fun(Field@0) -> {a, Field@0} end;
<<"B"/utf8>> ->
fun(Field@0) -> {b, Field@0} end;
<<"C"/utf8>> ->
fun(Field@0) -> {c, Field@0} end;
<<"D"/utf8>> ->
fun(Field@0) -> {d, Field@0} end;
<<"E"/utf8>> ->
fun(Field@0) -> {e, Field@0} end;
<<"F"/utf8>> ->
fun(Field@0) -> {f, Field@0} end;
<<"G"/utf8>> ->
fun(Field@0) -> {g, Field@0} end;
<<"H"/utf8>> ->
fun(Field@0) -> {h, Field@0} end;
<<"I"/utf8>> ->
fun(Field@0) -> {i, Field@0} end;
<<"J"/utf8>> ->
fun(Field@0) -> {j, Field@0} end;
<<"K"/utf8>> ->
fun(Field@0) -> {k, Field@0} end;
<<"L"/utf8>> ->
fun(Field@0) -> {l, Field@0} end;
<<"M"/utf8>> ->
fun(Field@0) -> {m, Field@0} end;
<<"N"/utf8>> ->
fun(Field@0) -> {n, Field@0} end;
<<"O"/utf8>> ->
fun(Field@0) -> {o, Field@0} end;
<<"P"/utf8>> ->
fun(Field@0) -> {p, Field@0} end;
<<"Q"/utf8>> ->
fun(Field@0) -> {q, Field@0} end;
<<"R"/utf8>> ->
fun(Field@0) -> {r, Field@0} end;
<<"S"/utf8>> ->
fun(Field@0) -> {s, Field@0} end;
<<"T"/utf8>> ->
fun(Field@0) -> {t, Field@0} end;
<<"U"/utf8>> ->
fun(Field@0) -> {u, Field@0} end;
<<"V"/utf8>> ->
fun(Field@0) -> {v, Field@0} end;
<<"W"/utf8>> ->
fun(Field@0) -> {w, Field@0} end;
<<"X"/utf8>> ->
fun(Field@0) -> {x, Field@0} end;
<<"Y"/utf8>> ->
fun(Field@0) -> {y, Field@0} end;
<<"Z"/utf8>> ->
fun(Field@0) -> {z, Field@0} end;
Name ->
fun(_capture) -> {axis, Name, _capture} end
end,
X@1(Size).