Current section
Files
Jump to
Current section
Files
src/blah@en@string.erl
-module(blah@en@string).
-compile([no_auto_import, nowarn_unused_vars]).
-export([roman_numeral/2, alpha/1, lower_alpha/1, upper_alpha/1, numeric/1, alphanumeric/1, with_pattern/1]).
-spec roman_numeral(integer(), integer()) -> binary().
roman_numeral(Min, Max) ->
_pipe = gleam@int:random(Min, Max),
_pipe@1 = gleam@list:repeat(<<"I"/utf8>>, _pipe),
_pipe@2 = gleam@string_builder:from_strings(_pipe@1),
_pipe@3 = gleam@string_builder:replace(
_pipe@2,
<<"IIIII"/utf8>>,
<<"V"/utf8>>
),
_pipe@4 = gleam@string_builder:replace(_pipe@3, <<"VV"/utf8>>, <<"X"/utf8>>),
_pipe@5 = gleam@string_builder:replace(
_pipe@4,
<<"XXXXX"/utf8>>,
<<"L"/utf8>>
),
_pipe@6 = gleam@string_builder:replace(_pipe@5, <<"LL"/utf8>>, <<"C"/utf8>>),
_pipe@7 = gleam@string_builder:replace(
_pipe@6,
<<"CCCCC"/utf8>>,
<<"D"/utf8>>
),
_pipe@8 = gleam@string_builder:replace(_pipe@7, <<"DD"/utf8>>, <<"M"/utf8>>),
_pipe@9 = gleam@string_builder:replace(
_pipe@8,
<<"DCCCC"/utf8>>,
<<"CM"/utf8>>
),
_pipe@10 = gleam@string_builder:replace(
_pipe@9,
<<"CCCC"/utf8>>,
<<"CD"/utf8>>
),
_pipe@11 = gleam@string_builder:replace(
_pipe@10,
<<"LXXXX"/utf8>>,
<<"XC"/utf8>>
),
_pipe@12 = gleam@string_builder:replace(
_pipe@11,
<<"XXXX"/utf8>>,
<<"XL"/utf8>>
),
_pipe@13 = gleam@string_builder:replace(
_pipe@12,
<<"VIIII"/utf8>>,
<<"IX"/utf8>>
),
_pipe@14 = gleam@string_builder:replace(
_pipe@13,
<<"IIII"/utf8>>,
<<"IV"/utf8>>
),
gleam@string_builder:to_string(_pipe@14).
-spec alpha_internal(gleam@string_builder:string_builder(), integer()) -> binary().
alpha_internal(State, Remaining) ->
case Remaining =:= 0 of
true ->
gleam@string_builder:to_string(State);
false ->
Letter = blah@utils:get_random_item(
[<<"A"/utf8>>,
<<"B"/utf8>>,
<<"C"/utf8>>,
<<"D"/utf8>>,
<<"E"/utf8>>,
<<"F"/utf8>>,
<<"G"/utf8>>,
<<"H"/utf8>>,
<<"I"/utf8>>,
<<"J"/utf8>>,
<<"K"/utf8>>,
<<"L"/utf8>>,
<<"M"/utf8>>,
<<"N"/utf8>>,
<<"O"/utf8>>,
<<"P"/utf8>>,
<<"Q"/utf8>>,
<<"R"/utf8>>,
<<"S"/utf8>>,
<<"T"/utf8>>,
<<"U"/utf8>>,
<<"V"/utf8>>,
<<"W"/utf8>>,
<<"X"/utf8>>,
<<"Y"/utf8>>,
<<"Z"/utf8>>,
<<"a"/utf8>>,
<<"b"/utf8>>,
<<"c"/utf8>>,
<<"d"/utf8>>,
<<"e"/utf8>>,
<<"f"/utf8>>,
<<"g"/utf8>>,
<<"h"/utf8>>,
<<"i"/utf8>>,
<<"j"/utf8>>,
<<"k"/utf8>>,
<<"l"/utf8>>,
<<"m"/utf8>>,
<<"n"/utf8>>,
<<"o"/utf8>>,
<<"p"/utf8>>,
<<"q"/utf8>>,
<<"r"/utf8>>,
<<"s"/utf8>>,
<<"t"/utf8>>,
<<"u"/utf8>>,
<<"v"/utf8>>,
<<"w"/utf8>>,
<<"x"/utf8>>,
<<"y"/utf8>>,
<<"z"/utf8>>]
),
alpha_internal(
gleam@string_builder:append(State, Letter),
Remaining - 1
)
end.
-spec alpha(integer()) -> binary().
alpha(Length) ->
alpha_internal(gleam@string_builder:new(), Length).
-spec lower_internal(gleam@string_builder:string_builder(), integer()) -> binary().
lower_internal(State, Remaining) ->
case Remaining =:= 0 of
true ->
gleam@string_builder:to_string(State);
false ->
Letter = blah@utils:get_random_item(
[<<"a"/utf8>>,
<<"b"/utf8>>,
<<"c"/utf8>>,
<<"d"/utf8>>,
<<"e"/utf8>>,
<<"f"/utf8>>,
<<"g"/utf8>>,
<<"h"/utf8>>,
<<"i"/utf8>>,
<<"j"/utf8>>,
<<"k"/utf8>>,
<<"l"/utf8>>,
<<"m"/utf8>>,
<<"n"/utf8>>,
<<"o"/utf8>>,
<<"p"/utf8>>,
<<"q"/utf8>>,
<<"r"/utf8>>,
<<"s"/utf8>>,
<<"t"/utf8>>,
<<"u"/utf8>>,
<<"v"/utf8>>,
<<"w"/utf8>>,
<<"x"/utf8>>,
<<"y"/utf8>>,
<<"z"/utf8>>]
),
lower_internal(
gleam@string_builder:append(State, Letter),
Remaining - 1
)
end.
-spec lower_alpha(integer()) -> binary().
lower_alpha(Length) ->
lower_internal(gleam@string_builder:new(), Length).
-spec upper_internal(gleam@string_builder:string_builder(), integer()) -> binary().
upper_internal(State, Remaining) ->
case Remaining =:= 0 of
true ->
gleam@string_builder:to_string(State);
false ->
Letter = blah@utils:get_random_item(
[<<"A"/utf8>>,
<<"B"/utf8>>,
<<"C"/utf8>>,
<<"D"/utf8>>,
<<"E"/utf8>>,
<<"F"/utf8>>,
<<"G"/utf8>>,
<<"H"/utf8>>,
<<"I"/utf8>>,
<<"J"/utf8>>,
<<"K"/utf8>>,
<<"L"/utf8>>,
<<"M"/utf8>>,
<<"N"/utf8>>,
<<"O"/utf8>>,
<<"P"/utf8>>,
<<"Q"/utf8>>,
<<"R"/utf8>>,
<<"S"/utf8>>,
<<"T"/utf8>>,
<<"U"/utf8>>,
<<"V"/utf8>>,
<<"W"/utf8>>,
<<"X"/utf8>>,
<<"Y"/utf8>>,
<<"Z"/utf8>>]
),
upper_internal(
gleam@string_builder:append(State, Letter),
Remaining - 1
)
end.
-spec upper_alpha(integer()) -> binary().
upper_alpha(Length) ->
upper_internal(gleam@string_builder:new(), Length).
-spec numeric_internal(gleam@string_builder:string_builder(), integer()) -> binary().
numeric_internal(State, Remaining) ->
case Remaining =:= 0 of
true ->
gleam@string_builder:to_string(State);
false ->
Digit = blah@utils:get_random_item(
[<<"0"/utf8>>,
<<"1"/utf8>>,
<<"2"/utf8>>,
<<"3"/utf8>>,
<<"4"/utf8>>,
<<"5"/utf8>>,
<<"6"/utf8>>,
<<"7"/utf8>>,
<<"8"/utf8>>,
<<"9"/utf8>>]
),
numeric_internal(
gleam@string_builder:append(State, Digit),
Remaining - 1
)
end.
-spec numeric(integer()) -> binary().
numeric(Length) ->
numeric_internal(gleam@string_builder:new(), Length).
-spec alphanumeric_internal(gleam@string_builder:string_builder(), integer()) -> binary().
alphanumeric_internal(State, Remaining) ->
case Remaining =:= 0 of
true ->
gleam@string_builder:to_string(State);
false ->
Character = blah@utils:get_random_item(
[<<"A"/utf8>>,
<<"B"/utf8>>,
<<"C"/utf8>>,
<<"D"/utf8>>,
<<"E"/utf8>>,
<<"F"/utf8>>,
<<"G"/utf8>>,
<<"H"/utf8>>,
<<"I"/utf8>>,
<<"J"/utf8>>,
<<"K"/utf8>>,
<<"L"/utf8>>,
<<"M"/utf8>>,
<<"N"/utf8>>,
<<"O"/utf8>>,
<<"P"/utf8>>,
<<"Q"/utf8>>,
<<"R"/utf8>>,
<<"S"/utf8>>,
<<"T"/utf8>>,
<<"U"/utf8>>,
<<"V"/utf8>>,
<<"W"/utf8>>,
<<"X"/utf8>>,
<<"Y"/utf8>>,
<<"Z"/utf8>>,
<<"a"/utf8>>,
<<"b"/utf8>>,
<<"c"/utf8>>,
<<"d"/utf8>>,
<<"e"/utf8>>,
<<"f"/utf8>>,
<<"g"/utf8>>,
<<"h"/utf8>>,
<<"i"/utf8>>,
<<"j"/utf8>>,
<<"k"/utf8>>,
<<"l"/utf8>>,
<<"m"/utf8>>,
<<"n"/utf8>>,
<<"o"/utf8>>,
<<"p"/utf8>>,
<<"q"/utf8>>,
<<"r"/utf8>>,
<<"s"/utf8>>,
<<"t"/utf8>>,
<<"u"/utf8>>,
<<"v"/utf8>>,
<<"w"/utf8>>,
<<"x"/utf8>>,
<<"y"/utf8>>,
<<"z"/utf8>>,
<<"0"/utf8>>,
<<"1"/utf8>>,
<<"2"/utf8>>,
<<"3"/utf8>>,
<<"4"/utf8>>,
<<"5"/utf8>>,
<<"6"/utf8>>,
<<"7"/utf8>>,
<<"8"/utf8>>,
<<"9"/utf8>>]
),
alphanumeric_internal(
gleam@string_builder:append(State, Character),
Remaining - 1
)
end.
-spec alphanumeric(integer()) -> binary().
alphanumeric(Length) ->
alphanumeric_internal(gleam@string_builder:new(), Length).
-spec with_pattern_internal(gleam@string_builder:string_builder(), binary()) -> binary().
with_pattern_internal(State, Given_pattern) ->
case gleam@string:first(Given_pattern) of
{ok, <<"%"/utf8>>} ->
To_append = case gleam@string:slice(Given_pattern, 0, 2) of
<<"%d"/utf8>> ->
blah@utils:get_random_item(
[<<"0"/utf8>>,
<<"1"/utf8>>,
<<"2"/utf8>>,
<<"3"/utf8>>,
<<"4"/utf8>>,
<<"5"/utf8>>,
<<"6"/utf8>>,
<<"7"/utf8>>,
<<"8"/utf8>>,
<<"9"/utf8>>]
);
<<"%w"/utf8>> ->
blah@utils:get_random_item(
[<<"A"/utf8>>,
<<"B"/utf8>>,
<<"C"/utf8>>,
<<"D"/utf8>>,
<<"E"/utf8>>,
<<"F"/utf8>>,
<<"G"/utf8>>,
<<"H"/utf8>>,
<<"I"/utf8>>,
<<"J"/utf8>>,
<<"K"/utf8>>,
<<"L"/utf8>>,
<<"M"/utf8>>,
<<"N"/utf8>>,
<<"O"/utf8>>,
<<"P"/utf8>>,
<<"Q"/utf8>>,
<<"R"/utf8>>,
<<"S"/utf8>>,
<<"T"/utf8>>,
<<"U"/utf8>>,
<<"V"/utf8>>,
<<"W"/utf8>>,
<<"X"/utf8>>,
<<"Y"/utf8>>,
<<"Z"/utf8>>,
<<"a"/utf8>>,
<<"b"/utf8>>,
<<"c"/utf8>>,
<<"d"/utf8>>,
<<"e"/utf8>>,
<<"f"/utf8>>,
<<"g"/utf8>>,
<<"h"/utf8>>,
<<"i"/utf8>>,
<<"j"/utf8>>,
<<"k"/utf8>>,
<<"l"/utf8>>,
<<"m"/utf8>>,
<<"n"/utf8>>,
<<"o"/utf8>>,
<<"p"/utf8>>,
<<"q"/utf8>>,
<<"r"/utf8>>,
<<"s"/utf8>>,
<<"t"/utf8>>,
<<"u"/utf8>>,
<<"v"/utf8>>,
<<"w"/utf8>>,
<<"x"/utf8>>,
<<"y"/utf8>>,
<<"z"/utf8>>]
);
<<"%c"/utf8>> ->
blah@utils:get_random_item(
[<<"A"/utf8>>,
<<"B"/utf8>>,
<<"C"/utf8>>,
<<"D"/utf8>>,
<<"E"/utf8>>,
<<"F"/utf8>>,
<<"G"/utf8>>,
<<"H"/utf8>>,
<<"I"/utf8>>,
<<"J"/utf8>>,
<<"K"/utf8>>,
<<"L"/utf8>>,
<<"M"/utf8>>,
<<"N"/utf8>>,
<<"O"/utf8>>,
<<"P"/utf8>>,
<<"Q"/utf8>>,
<<"R"/utf8>>,
<<"S"/utf8>>,
<<"T"/utf8>>,
<<"U"/utf8>>,
<<"V"/utf8>>,
<<"W"/utf8>>,
<<"X"/utf8>>,
<<"Y"/utf8>>,
<<"Z"/utf8>>,
<<"a"/utf8>>,
<<"b"/utf8>>,
<<"c"/utf8>>,
<<"d"/utf8>>,
<<"e"/utf8>>,
<<"f"/utf8>>,
<<"g"/utf8>>,
<<"h"/utf8>>,
<<"i"/utf8>>,
<<"j"/utf8>>,
<<"k"/utf8>>,
<<"l"/utf8>>,
<<"m"/utf8>>,
<<"n"/utf8>>,
<<"o"/utf8>>,
<<"p"/utf8>>,
<<"q"/utf8>>,
<<"r"/utf8>>,
<<"s"/utf8>>,
<<"t"/utf8>>,
<<"u"/utf8>>,
<<"v"/utf8>>,
<<"w"/utf8>>,
<<"x"/utf8>>,
<<"y"/utf8>>,
<<"z"/utf8>>,
<<"0"/utf8>>,
<<"1"/utf8>>,
<<"2"/utf8>>,
<<"3"/utf8>>,
<<"4"/utf8>>,
<<"5"/utf8>>,
<<"6"/utf8>>,
<<"7"/utf8>>,
<<"8"/utf8>>,
<<"9"/utf8>>]
);
<<"%l"/utf8>> ->
blah@utils:get_random_item(
[<<"a"/utf8>>,
<<"b"/utf8>>,
<<"c"/utf8>>,
<<"d"/utf8>>,
<<"e"/utf8>>,
<<"f"/utf8>>,
<<"g"/utf8>>,
<<"h"/utf8>>,
<<"i"/utf8>>,
<<"j"/utf8>>,
<<"k"/utf8>>,
<<"l"/utf8>>,
<<"m"/utf8>>,
<<"n"/utf8>>,
<<"o"/utf8>>,
<<"p"/utf8>>,
<<"q"/utf8>>,
<<"r"/utf8>>,
<<"s"/utf8>>,
<<"t"/utf8>>,
<<"u"/utf8>>,
<<"v"/utf8>>,
<<"w"/utf8>>,
<<"x"/utf8>>,
<<"y"/utf8>>,
<<"z"/utf8>>]
);
<<"%u"/utf8>> ->
blah@utils:get_random_item(
[<<"A"/utf8>>,
<<"B"/utf8>>,
<<"C"/utf8>>,
<<"D"/utf8>>,
<<"E"/utf8>>,
<<"F"/utf8>>,
<<"G"/utf8>>,
<<"H"/utf8>>,
<<"I"/utf8>>,
<<"J"/utf8>>,
<<"K"/utf8>>,
<<"L"/utf8>>,
<<"M"/utf8>>,
<<"N"/utf8>>,
<<"O"/utf8>>,
<<"P"/utf8>>,
<<"Q"/utf8>>,
<<"R"/utf8>>,
<<"S"/utf8>>,
<<"T"/utf8>>,
<<"U"/utf8>>,
<<"V"/utf8>>,
<<"W"/utf8>>,
<<"X"/utf8>>,
<<"Y"/utf8>>,
<<"Z"/utf8>>]
);
<<"%n"/utf8>> ->
blah@utils:get_random_item(
[<<"1"/utf8>>,
<<"2"/utf8>>,
<<"3"/utf8>>,
<<"4"/utf8>>,
<<"5"/utf8>>,
<<"6"/utf8>>,
<<"7"/utf8>>,
<<"8"/utf8>>,
<<"9"/utf8>>]
);
Characters ->
Characters
end,
with_pattern_internal(
gleam@string_builder:append(State, To_append),
gleam@string:drop_left(Given_pattern, 2)
);
{ok, To_append@1} ->
with_pattern_internal(
gleam@string_builder:append(State, To_append@1),
gleam@string:drop_left(Given_pattern, 1)
);
{error, nil} ->
gleam@string_builder:to_string(State)
end.
-spec with_pattern(binary()) -> binary().
with_pattern(Given_pattern) ->
with_pattern_internal(gleam@string_builder:new(), Given_pattern).