|
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