-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).