|
2 | 2 |
|
3 | 3 | import gleam/int
|
4 | 4 | import gleam/string
|
5 |
| -import gleam/string_builder.{type StringBuilder} |
6 | 5 |
|
7 | 6 | /// Converts a UTF-8 `String` type into a `BitArray`.
|
8 | 7 | ///
|
@@ -171,42 +170,32 @@ pub fn base16_decode(input: String) -> Result(BitArray, Nil)
|
171 | 170 | /// ```
|
172 | 171 | ///
|
173 | 172 | pub fn inspect(input: BitArray) -> String {
|
174 |
| - string_builder.new() |
175 |
| - |> string_builder.append("<<") |
176 |
| - |> do_inspect(input) |
177 |
| - |> string_builder.append(">>") |
178 |
| - |> string_builder.to_string |
| 173 | + do_inspect(input, "<<") <> ">>" |
179 | 174 | }
|
180 | 175 |
|
181 |
| -fn do_inspect(builder: StringBuilder, input: BitArray) -> StringBuilder { |
| 176 | +fn do_inspect(input: BitArray, accumulator: String) -> String { |
182 | 177 | case input {
|
183 |
| - <<>> -> builder |
| 178 | + <<>> -> accumulator |
184 | 179 |
|
185 |
| - <<x:size(1)>> -> do_inspect_int(builder, x, ":size(1)") |
186 |
| - <<x:size(2)>> -> do_inspect_int(builder, x, ":size(2)") |
187 |
| - <<x:size(3)>> -> do_inspect_int(builder, x, ":size(3)") |
188 |
| - <<x:size(4)>> -> do_inspect_int(builder, x, ":size(4)") |
189 |
| - <<x:size(5)>> -> do_inspect_int(builder, x, ":size(5)") |
190 |
| - <<x:size(6)>> -> do_inspect_int(builder, x, ":size(6)") |
191 |
| - <<x:size(7)>> -> do_inspect_int(builder, x, ":size(7)") |
| 180 | + <<x:size(1)>> -> accumulator <> int.to_string(x) <> ":size(1)" |
| 181 | + <<x:size(2)>> -> accumulator <> int.to_string(x) <> ":size(2)" |
| 182 | + <<x:size(3)>> -> accumulator <> int.to_string(x) <> ":size(3)" |
| 183 | + <<x:size(4)>> -> accumulator <> int.to_string(x) <> ":size(4)" |
| 184 | + <<x:size(5)>> -> accumulator <> int.to_string(x) <> ":size(5)" |
| 185 | + <<x:size(6)>> -> accumulator <> int.to_string(x) <> ":size(6)" |
| 186 | + <<x:size(7)>> -> accumulator <> int.to_string(x) <> ":size(7)" |
192 | 187 |
|
193 | 188 | <<x, rest:bits>> -> {
|
194 | 189 | let suffix = case rest {
|
195 | 190 | <<>> -> ""
|
196 | 191 | _ -> ", "
|
197 | 192 | }
|
198 | 193 |
|
199 |
| - builder |
200 |
| - |> do_inspect_int(x, suffix) |
201 |
| - |> do_inspect(rest) |
| 194 | + let accumulator = accumulator <> int.to_string(x) <> suffix |
| 195 | + |
| 196 | + do_inspect(rest, accumulator) |
202 | 197 | }
|
203 | 198 |
|
204 |
| - _ -> builder |
| 199 | + _ -> accumulator |
205 | 200 | }
|
206 | 201 | }
|
207 |
| - |
208 |
| -fn do_inspect_int(builder: StringBuilder, value: Int, suffix: String) { |
209 |
| - builder |
210 |
| - |> string_builder.append(int.to_string(value)) |
211 |
| - |> string_builder.append(suffix) |
212 |
| -} |
0 commit comments