Current section
Files
Jump to
Current section
Files
src/blah@fa@string.erl
-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.