-module(blah@fa@string). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([pronounceable/0, alpha/1, numeric/1, alphanumeric/1, with_pattern/1]). -spec pronounceable_internal(integer(), gleam@string_builder:string_builder()) -> binary(). pronounceable_internal(Remaining, Storage) -> case Remaining of 0 -> gleam@string_builder:to_string(Storage); _ -> Nonce = blah@utils:get_random_int(4, 2048), Letters = case Nonce rem 2 of 0 -> First = blah@utils:get_random_item( [<<"ا"/utf8>>, <<"و"/utf8>>] ), Second = blah@utils:get_random_item( [<<"ب"/utf8>>, <<"پ"/utf8>>, <<"ت"/utf8>>, <<"ث"/utf8>>, <<"ج"/utf8>>, <<"چ"/utf8>>, <<"ح"/utf8>>, <<"خ"/utf8>>, <<"د"/utf8>>, <<"ذ"/utf8>>, <<"ر"/utf8>>, <<"ز"/utf8>>, <<"ژ"/utf8>>, <<"س"/utf8>>, <<"ش"/utf8>>, <<"ص"/utf8>>, <<"ض"/utf8>>, <<"ط"/utf8>>, <<"ظ"/utf8>>, <<"ع"/utf8>>, <<"غ"/utf8>>, <<"ف"/utf8>>, <<"ق"/utf8>>, <<"ک"/utf8>>, <<"گ"/utf8>>, <<"ل"/utf8>>, <<"م"/utf8>>, <<"ن"/utf8>>, <<"ه"/utf8>>, <<"ی"/utf8>>] ), _pipe = [First, Second], gleam@list:map( _pipe, fun gleam@string_builder:from_string/1 ); _ -> First@1 = blah@utils:get_random_item( [<<"ب"/utf8>>, <<"پ"/utf8>>, <<"ت"/utf8>>, <<"ث"/utf8>>, <<"ج"/utf8>>, <<"چ"/utf8>>, <<"ح"/utf8>>, <<"خ"/utf8>>, <<"د"/utf8>>, <<"ذ"/utf8>>, <<"ر"/utf8>>, <<"ز"/utf8>>, <<"ژ"/utf8>>, <<"س"/utf8>>, <<"ش"/utf8>>, <<"ص"/utf8>>, <<"ض"/utf8>>, <<"ط"/utf8>>, <<"ظ"/utf8>>, <<"ع"/utf8>>, <<"غ"/utf8>>, <<"ف"/utf8>>, <<"ق"/utf8>>, <<"ک"/utf8>>, <<"گ"/utf8>>, <<"ل"/utf8>>, <<"م"/utf8>>, <<"ن"/utf8>>, <<"ه"/utf8>>, <<"ی"/utf8>>] ), Second@1 = blah@utils:get_random_item( [<<"ا"/utf8>>, <<"و"/utf8>>] ), _pipe@1 = [First@1, Second@1], gleam@list:map( _pipe@1, fun gleam@string_builder:from_string/1 ) end, pronounceable_internal( Remaining - 2, gleam@string_builder:concat([Storage | Letters]) ) end. -spec pronounceable() -> binary(). pronounceable() -> Nonce = blah@utils:get_random_int(4, 2048), Length = (blah@utils:get_random_int(2, 4)) * 2, case Nonce rem 2 of 0 -> First = blah@utils:get_random_item([<<"آ"/utf8>>, <<"او"/utf8>>]), Second = blah@utils:get_random_item( [<<"ب"/utf8>>, <<"پ"/utf8>>, <<"ت"/utf8>>, <<"ث"/utf8>>, <<"ج"/utf8>>, <<"چ"/utf8>>, <<"ح"/utf8>>, <<"خ"/utf8>>, <<"د"/utf8>>, <<"ذ"/utf8>>, <<"ر"/utf8>>, <<"ز"/utf8>>, <<"ژ"/utf8>>, <<"س"/utf8>>, <<"ش"/utf8>>, <<"ص"/utf8>>, <<"ض"/utf8>>, <<"ط"/utf8>>, <<"ظ"/utf8>>, <<"ع"/utf8>>, <<"غ"/utf8>>, <<"ف"/utf8>>, <<"ق"/utf8>>, <<"ک"/utf8>>, <<"گ"/utf8>>, <<"ل"/utf8>>, <<"م"/utf8>>, <<"ن"/utf8>>, <<"ه"/utf8>>, <<"ی"/utf8>>] ), pronounceable_internal( Length - 2, gleam@string_builder:from_strings([First, Second]) ); _ -> pronounceable_internal(Length, gleam@string_builder:new()) end. -spec alpha_internal(integer(), gleam@string_builder:string_builder()) -> binary(). alpha_internal(Remaining, Storage) -> case Remaining =:= 0 of true -> gleam@string_builder:to_string(Storage); false -> Letter = blah@utils:get_random_item( [<<"آ"/utf8>>, <<"ا"/utf8>>, <<"ب"/utf8>>, <<"پ"/utf8>>, <<"ت"/utf8>>, <<"ث"/utf8>>, <<"ج"/utf8>>, <<"چ"/utf8>>, <<"ح"/utf8>>, <<"خ"/utf8>>, <<"د"/utf8>>, <<"ذ"/utf8>>, <<"ر"/utf8>>, <<"ز"/utf8>>, <<"ژ"/utf8>>, <<"س"/utf8>>, <<"ش"/utf8>>, <<"ص"/utf8>>, <<"ض"/utf8>>, <<"ط"/utf8>>, <<"ظ"/utf8>>, <<"ع"/utf8>>, <<"غ"/utf8>>, <<"ف"/utf8>>, <<"ق"/utf8>>, <<"ک"/utf8>>, <<"گ"/utf8>>, <<"ل"/utf8>>, <<"م"/utf8>>, <<"ن"/utf8>>, <<"و"/utf8>>, <<"ه"/utf8>>, <<"ی"/utf8>>] ), alpha_internal( Remaining - 1, gleam@string_builder:append(Storage, Letter) ) end. -spec alpha(integer()) -> binary(). alpha(Length) -> alpha_internal(Length, gleam@string_builder:new()). -spec numeric_internal(integer(), gleam@string_builder:string_builder()) -> binary(). numeric_internal(Remaining, Storage) -> case Remaining =:= 0 of true -> gleam@string_builder:to_string(Storage); false -> Digit = blah@utils:get_random_item( [<<"۰"/utf8>>, <<"۱"/utf8>>, <<"۲"/utf8>>, <<"۳"/utf8>>, <<"۴"/utf8>>, <<"۵"/utf8>>, <<"۶"/utf8>>, <<"۷"/utf8>>, <<"۸"/utf8>>, <<"۹"/utf8>>] ), numeric_internal( Remaining - 1, gleam@string_builder:append(Storage, Digit) ) end. -spec numeric(integer()) -> binary(). numeric(Length) -> numeric_internal(Length, gleam@string_builder:new()). -spec alphanumeric_internal(integer(), gleam@string_builder:string_builder()) -> binary(). alphanumeric_internal(Remaining, Storage) -> case Remaining =:= 0 of true -> gleam@string_builder:to_string(Storage); false -> Character = blah@utils:get_random_item( [<<"آ"/utf8>>, <<"ا"/utf8>>, <<"ب"/utf8>>, <<"پ"/utf8>>, <<"ت"/utf8>>, <<"ث"/utf8>>, <<"ج"/utf8>>, <<"چ"/utf8>>, <<"ح"/utf8>>, <<"خ"/utf8>>, <<"د"/utf8>>, <<"ذ"/utf8>>, <<"ر"/utf8>>, <<"ز"/utf8>>, <<"ژ"/utf8>>, <<"س"/utf8>>, <<"ش"/utf8>>, <<"ص"/utf8>>, <<"ض"/utf8>>, <<"ط"/utf8>>, <<"ظ"/utf8>>, <<"ع"/utf8>>, <<"غ"/utf8>>, <<"ف"/utf8>>, <<"ق"/utf8>>, <<"ک"/utf8>>, <<"گ"/utf8>>, <<"ل"/utf8>>, <<"م"/utf8>>, <<"ن"/utf8>>, <<"و"/utf8>>, <<"ه"/utf8>>, <<"ی"/utf8>>, <<"۰"/utf8>>, <<"۱"/utf8>>, <<"۲"/utf8>>, <<"۳"/utf8>>, <<"۴"/utf8>>, <<"۵"/utf8>>, <<"۶"/utf8>>, <<"۷"/utf8>>, <<"۸"/utf8>>, <<"۹"/utf8>>] ), alphanumeric_internal( Remaining - 1, gleam@string_builder:append(Storage, Character) ) end. -spec alphanumeric(integer()) -> binary(). alphanumeric(Length) -> alphanumeric_internal(Length, gleam@string_builder:new()). -spec with_pattern_internal(binary(), gleam@string_builder:string_builder()) -> binary(). with_pattern_internal(Given_pattern, Storage) -> 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( [<<"۰"/utf8>>, <<"۱"/utf8>>, <<"۲"/utf8>>, <<"۳"/utf8>>, <<"۴"/utf8>>, <<"۵"/utf8>>, <<"۶"/utf8>>, <<"۷"/utf8>>, <<"۸"/utf8>>, <<"۹"/utf8>>] ); <<"%w"/utf8>> -> blah@utils:get_random_item( [<<"آ"/utf8>>, <<"ا"/utf8>>, <<"ب"/utf8>>, <<"پ"/utf8>>, <<"ت"/utf8>>, <<"ث"/utf8>>, <<"ج"/utf8>>, <<"چ"/utf8>>, <<"ح"/utf8>>, <<"خ"/utf8>>, <<"د"/utf8>>, <<"ذ"/utf8>>, <<"ر"/utf8>>, <<"ز"/utf8>>, <<"ژ"/utf8>>, <<"س"/utf8>>, <<"ش"/utf8>>, <<"ص"/utf8>>, <<"ض"/utf8>>, <<"ط"/utf8>>, <<"ظ"/utf8>>, <<"ع"/utf8>>, <<"غ"/utf8>>, <<"ف"/utf8>>, <<"ق"/utf8>>, <<"ک"/utf8>>, <<"گ"/utf8>>, <<"ل"/utf8>>, <<"م"/utf8>>, <<"ن"/utf8>>, <<"و"/utf8>>, <<"ه"/utf8>>, <<"ی"/utf8>>] ); <<"%c"/utf8>> -> blah@utils:get_random_item( [<<"آ"/utf8>>, <<"ا"/utf8>>, <<"ب"/utf8>>, <<"پ"/utf8>>, <<"ت"/utf8>>, <<"ث"/utf8>>, <<"ج"/utf8>>, <<"چ"/utf8>>, <<"ح"/utf8>>, <<"خ"/utf8>>, <<"د"/utf8>>, <<"ذ"/utf8>>, <<"ر"/utf8>>, <<"ز"/utf8>>, <<"ژ"/utf8>>, <<"س"/utf8>>, <<"ش"/utf8>>, <<"ص"/utf8>>, <<"ض"/utf8>>, <<"ط"/utf8>>, <<"ظ"/utf8>>, <<"ع"/utf8>>, <<"غ"/utf8>>, <<"ف"/utf8>>, <<"ق"/utf8>>, <<"ک"/utf8>>, <<"گ"/utf8>>, <<"ل"/utf8>>, <<"م"/utf8>>, <<"ن"/utf8>>, <<"و"/utf8>>, <<"ه"/utf8>>, <<"ی"/utf8>>, <<"۰"/utf8>>, <<"۱"/utf8>>, <<"۲"/utf8>>, <<"۳"/utf8>>, <<"۴"/utf8>>, <<"۵"/utf8>>, <<"۶"/utf8>>, <<"۷"/utf8>>, <<"۸"/utf8>>, <<"۹"/utf8>>] ); <<"%n"/utf8>> -> blah@utils:get_random_item( [<<"۱"/utf8>>, <<"۲"/utf8>>, <<"۳"/utf8>>, <<"۴"/utf8>>, <<"۵"/utf8>>, <<"۶"/utf8>>, <<"۷"/utf8>>, <<"۸"/utf8>>, <<"۹"/utf8>>] ); Characters -> Characters end, with_pattern_internal( gleam@string:drop_left(Given_pattern, 2), gleam@string_builder:append(Storage, To_append) ); {ok, To_append@1} -> with_pattern_internal( gleam@string:drop_left(Given_pattern, 1), gleam@string_builder:append(Storage, To_append@1) ); {error, nil} -> gleam@string_builder:to_string(Storage) end. -spec with_pattern(binary()) -> binary(). with_pattern(Given_pattern) -> with_pattern_internal(Given_pattern, gleam@string_builder:new()).