diff options
-rw-r--r-- | src/gleam/bit_array.gleam | 10 | ||||
-rw-r--r-- | src/gleam_stdlib.mjs | 4 | ||||
-rw-r--r-- | test/gleam/bit_array_test.gleam | 3 |
3 files changed, 15 insertions, 2 deletions
diff --git a/src/gleam/bit_array.gleam b/src/gleam/bit_array.gleam index 4a2e7bb..52da8cb 100644 --- a/src/gleam/bit_array.gleam +++ b/src/gleam/bit_array.gleam @@ -157,6 +157,7 @@ pub fn base16_encode(input: BitArray) -> String @external(javascript, "../gleam_stdlib.mjs", "base16_decode") pub fn base16_decode(input: String) -> Result(BitArray, Nil) +@target(javascript) /// Converts a bit array to a string containing the decimal value of each byte. /// /// ## Examples @@ -168,12 +169,17 @@ pub fn base16_decode(input: String) -> Result(BitArray, Nil) /// inspect(<<100, 5:3>>) /// // -> "<<100, 5:size(3)>>" /// ``` -/// +/// +@external(javascript, "../gleam_stdlib.mjs", "bit_array_inspect") +pub fn inspect(input: BitArray) -> String + +@target(erlang) pub fn inspect(input: BitArray) -> String { do_inspect(input, "<<") <> ">>" } -fn do_inspect(input: BitArray, accumulator: String) -> String { +@target(erlang) +pub fn do_inspect(input: BitArray, accumulator: String) -> String { case input { <<>> -> accumulator diff --git a/src/gleam_stdlib.mjs b/src/gleam_stdlib.mjs index 877e707..3f3fbb6 100644 --- a/src/gleam_stdlib.mjs +++ b/src/gleam_stdlib.mjs @@ -879,3 +879,7 @@ export function base16_decode(string) { } return new Ok(new BitArray(bytes)); } + +export function bit_array_inspect(bits) { + return `<<${[...bits.buffer].join(", ")}>>`; +} diff --git a/test/gleam/bit_array_test.gleam b/test/gleam/bit_array_test.gleam index f12f57a..bf38aae 100644 --- a/test/gleam/bit_array_test.gleam +++ b/test/gleam/bit_array_test.gleam @@ -289,7 +289,10 @@ pub fn inspect_test() { bit_array.inspect(<<0, 20, 0x20, 255>>) |> should.equal("<<0, 20, 32, 255>>") +} +@target(erlang) +pub fn inspect_partial_bytes_test() { bit_array.inspect(<<4:5>>) |> should.equal("<<4:size(5)>>") |