-module(blah@fa@string). -compile(no_auto_import). -export([alpha/1, numeric/1, alphanumeric/1, with_pattern/1, pronounceable/0]). -spec alpha(integer()) -> binary(). alpha(Length) -> alpha_internal(gleam@string_builder:new(), Length). -spec numeric(integer()) -> binary(). numeric(Length) -> numeric_internal(gleam@string_builder:new(), Length). -spec alphanumeric(integer()) -> binary(). alphanumeric(Length) -> alphanumeric_internal(gleam@string_builder:new(), Length). -spec with_pattern(binary()) -> binary(). with_pattern(Given_pattern) -> with_pattern_internal(gleam@string_builder:new(), Given_pattern). -spec pronounceable() -> binary(). pronounceable() -> Nonce = gleam@int:random(4, 2048), Length = gleam@int:random(2, 4) * 2, case Nonce rem 2 of 0 -> {ok, First@1} = case blah@utils:get_random_item( [<<"آ"/utf8>>, <<"او"/utf8>>] ) of {ok, First} -> {ok, First}; _try -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _try, module => <<"blah/fa/string"/utf8>>, function => <<"pronounceable"/utf8>>, line => 65}) end, {ok, Second@1} = case 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>>] ) of {ok, Second} -> {ok, Second}; _try@1 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _try@1, module => <<"blah/fa/string"/utf8>>, function => <<"pronounceable"/utf8>>, line => 66}) end, pronounceable_internal( gleam@string_builder:from_strings([First@1, Second@1]), Length - 2 ); 1 -> pronounceable_internal(gleam@string_builder:new(), Length) end. -spec pronounceable_internal(gleam@string_builder:string_builder(), integer()) -> binary(). pronounceable_internal(State, Remaining) -> case Remaining of 0 -> gleam@string_builder:to_string(State); _@1 -> Nonce = gleam@int:random(4, 2048), Letters = case Nonce rem 2 of 0 -> {ok, First@1} = case blah@utils:get_random_item( [<<"ا"/utf8>>, <<"و"/utf8>>] ) of {ok, First} -> {ok, First}; _try -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _try, module => <<"blah/fa/string"/utf8>>, function => <<"pronounceable_internal"/utf8>>, line => 84}) end, {ok, Second@1} = case 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>>] ) of {ok, Second} -> {ok, Second}; _try@1 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _try@1, module => <<"blah/fa/string"/utf8>>, function => <<"pronounceable_internal"/utf8>>, line => 85}) end, _pipe = [First@1, Second@1], gleam@list:map( _pipe, fun gleam@string_builder:from_string/1 ); 1 -> {ok, First@3} = case 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>>] ) of {ok, First@2} -> {ok, First@2}; _try@2 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _try@2, module => <<"blah/fa/string"/utf8>>, function => <<"pronounceable_internal"/utf8>>, line => 90}) end, {ok, Second@3} = case blah@utils:get_random_item( [<<"ا"/utf8>>, <<"و"/utf8>>] ) of {ok, Second@2} -> {ok, Second@2}; _try@3 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _try@3, module => <<"blah/fa/string"/utf8>>, function => <<"pronounceable_internal"/utf8>>, line => 91}) end, _pipe@1 = [First@3, Second@3], gleam@list:map( _pipe@1, fun gleam@string_builder:from_string/1 ) end, pronounceable_internal( gleam@string_builder:concat([State | Letters]), Remaining - 2 ) end. -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 -> {ok, Letter@1} = case 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>>] ) of {ok, Letter} -> {ok, Letter}; _try -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _try, module => <<"blah/fa/string"/utf8>>, function => <<"alpha_internal"/utf8>>, line => 109}) end, alpha_internal( gleam@string_builder:append(State, Letter@1), Remaining - 1 ) end. -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 -> {ok, Digit@1} = case blah@utils:get_random_item( [<<"۰"/utf8>>, <<"۱"/utf8>>, <<"۲"/utf8>>, <<"۳"/utf8>>, <<"۴"/utf8>>, <<"۵"/utf8>>, <<"۶"/utf8>>, <<"۷"/utf8>>, <<"۸"/utf8>>, <<"۹"/utf8>>] ) of {ok, Digit} -> {ok, Digit}; _try -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _try, module => <<"blah/fa/string"/utf8>>, function => <<"numeric_internal"/utf8>>, line => 120}) end, numeric_internal( gleam@string_builder:append(State, Digit@1), Remaining - 1 ) end. -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 -> {ok, Character@1} = case 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>>] ) of {ok, Character} -> {ok, Character}; _try -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _try, module => <<"blah/fa/string"/utf8>>, function => <<"alphanumeric_internal"/utf8>>, line => 131}) end, alphanumeric_internal( gleam@string_builder:append(State, Character@1), Remaining - 1 ) end. -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>>} -> {ok, To_append@1} = case 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 -> {ok, Characters} end of {ok, To_append} -> {ok, To_append}; _try -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _try, module => <<"blah/fa/string"/utf8>>, function => <<"with_pattern_internal"/utf8>>, line => 143}) end, with_pattern_internal( gleam@string_builder:append(State, To_append@1), gleam@string:drop_left(Given_pattern, 2) ); {ok, To_append@2} -> with_pattern_internal( gleam@string_builder:append(State, To_append@2), gleam@string:drop_left(Given_pattern, 1) ); {error, nil} -> gleam@string_builder:to_string(State) end.