aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gleam/bit_array.gleam10
-rw-r--r--src/gleam_stdlib.mjs4
-rw-r--r--test/gleam/bit_array_test.gleam3
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)>>")