22
33import gleam/list
44import gleam/string
5- import gleam/string_builder . { type StringBuilder }
5+ import gleam/string_tree . { type StringTree }
66
77import blah/utils . { get_random_int , get_random_item }
88
99pub fn alpha ( length : Int ) {
10- alpha_internal ( length , string_builder . new ( ) )
10+ alpha_internal ( length , string_tree . new ( ) )
1111}
1212
1313pub fn lower_alpha ( length : Int ) {
14- lower_internal ( length , string_builder . new ( ) )
14+ lower_internal ( length , string_tree . new ( ) )
1515}
1616
1717pub fn upper_alpha ( length : Int ) {
18- upper_internal ( length , string_builder . new ( ) )
18+ upper_internal ( length , string_tree . new ( ) )
1919}
2020
2121pub fn numeric ( length : Int ) {
22- numeric_internal ( length , string_builder . new ( ) )
22+ numeric_internal ( length , string_tree . new ( ) )
2323}
2424
2525pub fn alphanumeric ( length : Int ) {
26- alphanumeric_internal ( length , string_builder . new ( ) )
26+ alphanumeric_internal ( length , string_tree . new ( ) )
2727}
2828
2929/// you can use the below codes to specify your desired pattern:
@@ -41,26 +41,26 @@ pub fn alphanumeric(length: Int) {
4141/// %u - uppercase letters
4242///
4343pub fn with_pattern ( given_pattern : String ) {
44- with_pattern_internal ( given_pattern , string_builder . new ( ) )
44+ with_pattern_internal ( given_pattern , string_tree . new ( ) )
4545}
4646
4747pub fn roman_numeral ( min : Int , max : Int ) {
4848 get_random_int ( min , max )
4949 |> list . repeat ( "I" , _)
50- |> string_builder . from_strings
51- |> string_builder . replace ( "IIIII" , "V" )
52- |> string_builder . replace ( "VV" , "X" )
53- |> string_builder . replace ( "XXXXX" , "L" )
54- |> string_builder . replace ( "LL" , "C" )
55- |> string_builder . replace ( "CCCCC" , "D" )
56- |> string_builder . replace ( "DD" , "M" )
57- |> string_builder . replace ( "DCCCC" , "CM" )
58- |> string_builder . replace ( "CCCC" , "CD" )
59- |> string_builder . replace ( "LXXXX" , "XC" )
60- |> string_builder . replace ( "XXXX" , "XL" )
61- |> string_builder . replace ( "VIIII" , "IX" )
62- |> string_builder . replace ( "IIII" , "IV" )
63- |> string_builder . to_string
50+ |> string_tree . from_strings
51+ |> string_tree . replace ( "IIIII" , "V" )
52+ |> string_tree . replace ( "VV" , "X" )
53+ |> string_tree . replace ( "XXXXX" , "L" )
54+ |> string_tree . replace ( "LL" , "C" )
55+ |> string_tree . replace ( "CCCCC" , "D" )
56+ |> string_tree . replace ( "DD" , "M" )
57+ |> string_tree . replace ( "DCCCC" , "CM" )
58+ |> string_tree . replace ( "CCCC" , "CD" )
59+ |> string_tree . replace ( "LXXXX" , "XC" )
60+ |> string_tree . replace ( "XXXX" , "XL" )
61+ |> string_tree . replace ( "VIIII" , "IX" )
62+ |> string_tree . replace ( "IIII" , "IV" )
63+ |> string_tree . to_string
6464}
6565
6666const lower_letters = [
@@ -91,68 +91,65 @@ const characters = [
9191 "w" , "x" , "y" , "z" , "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" ,
9292]
9393
94- fn alpha_internal ( remaining : Int , storage : StringBuilder ) -> String {
94+ fn alpha_internal ( remaining : Int , storage : StringTree ) -> String {
9595 case remaining == 0 {
96- True -> string_builder . to_string ( storage )
96+ True -> string_tree . to_string ( storage )
9797
9898 False -> {
9999 let letter = get_random_item ( letters )
100- alpha_internal ( remaining - 1 , string_builder . append ( storage , letter ) )
100+ alpha_internal ( remaining - 1 , string_tree . append ( storage , letter ) )
101101 }
102102 }
103103}
104104
105- fn lower_internal ( remaining : Int , storage : StringBuilder ) -> String {
105+ fn lower_internal ( remaining : Int , storage : StringTree ) -> String {
106106 case remaining == 0 {
107- True -> string_builder . to_string ( storage )
107+ True -> string_tree . to_string ( storage )
108108
109109 False -> {
110110 let letter = get_random_item ( lower_letters )
111- lower_internal ( remaining - 1 , string_builder . append ( storage , letter ) )
111+ lower_internal ( remaining - 1 , string_tree . append ( storage , letter ) )
112112 }
113113 }
114114}
115115
116- fn upper_internal ( remaining : Int , storage : StringBuilder ) -> String {
116+ fn upper_internal ( remaining : Int , storage : StringTree ) -> String {
117117 case remaining == 0 {
118- True -> string_builder . to_string ( storage )
118+ True -> string_tree . to_string ( storage )
119119
120120 False -> {
121121 let letter = get_random_item ( upper_letters )
122- upper_internal ( remaining - 1 , string_builder . append ( storage , letter ) )
122+ upper_internal ( remaining - 1 , string_tree . append ( storage , letter ) )
123123 }
124124 }
125125}
126126
127- fn numeric_internal ( remaining : Int , storage : StringBuilder ) -> String {
127+ fn numeric_internal ( remaining : Int , storage : StringTree ) -> String {
128128 case remaining == 0 {
129- True -> string_builder . to_string ( storage )
129+ True -> string_tree . to_string ( storage )
130130
131131 False -> {
132132 let digit = get_random_item ( digits )
133- numeric_internal ( remaining - 1 , string_builder . append ( storage , digit ) )
133+ numeric_internal ( remaining - 1 , string_tree . append ( storage , digit ) )
134134 }
135135 }
136136}
137137
138- fn alphanumeric_internal ( remaining : Int , storage : StringBuilder ) -> String {
138+ fn alphanumeric_internal ( remaining : Int , storage : StringTree ) -> String {
139139 case remaining == 0 {
140- True -> string_builder . to_string ( storage )
140+ True -> string_tree . to_string ( storage )
141141
142142 False -> {
143143 let character = get_random_item ( characters )
144144 alphanumeric_internal (
145145 remaining - 1 ,
146- string_builder . append ( storage , character ) ,
146+ string_tree . append ( storage , character ) ,
147147 )
148148 }
149149 }
150150}
151151
152- fn with_pattern_internal (
153- given_pattern : String ,
154- storage : StringBuilder ,
155- ) -> String {
152+ fn with_pattern_internal ( given_pattern : String , storage : StringTree ) -> String {
156153 case string . first ( given_pattern ) {
157154 Ok ( "%" ) -> {
158155 let to_append = case string . slice ( given_pattern , 0 , 2 ) {
@@ -165,17 +162,17 @@ fn with_pattern_internal(
165162 characters -> characters
166163 }
167164 with_pattern_internal (
168- string . drop_left ( given_pattern , 2 ) ,
169- string_builder . append ( storage , to_append ) ,
165+ string . drop_start ( given_pattern , 2 ) ,
166+ string_tree . append ( storage , to_append ) ,
170167 )
171168 }
172169
173170 Ok ( to_append ) ->
174171 with_pattern_internal (
175- string . drop_left ( given_pattern , 1 ) ,
176- string_builder . append ( storage , to_append ) ,
172+ string . drop_start ( given_pattern , 1 ) ,
173+ string_tree . append ( storage , to_append ) ,
177174 )
178175
179- Error ( Nil ) -> string_builder . to_string ( storage )
176+ Error ( Nil ) -> string_tree . to_string ( storage )
180177 }
181178}
0 commit comments