aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gleam_stdlib.erl10
-rw-r--r--test/gleam/string_test.gleam48
2 files changed, 37 insertions, 21 deletions
diff --git a/src/gleam_stdlib.erl b/src/gleam_stdlib.erl
index cab299f..230ca4c 100644
--- a/src/gleam_stdlib.erl
+++ b/src/gleam_stdlib.erl
@@ -498,9 +498,13 @@ inspect_maybe_utf8_string(Binary, Acc) ->
$\n -> <<$\\, $n>>;
$\t -> <<$\\, $t>>;
$\f -> <<$\\, $f>>;
- $\b -> <<$\\, $b>>;
- $\v -> <<$\\, $v>>;
- $\e -> <<$\\, $e>>;
+ 127 -> <<$\\, $u, ${, $0, $0, $7, $F, $}>>;
+ X when X < 32 ->
+ Hex = integer_to_list(X, 16),
+ Leading = lists:duplicate(4 - length(Hex), "0"),
+ Formatted = lists:append(Leading, Hex),
+ Bin = list_to_binary(Formatted),
+ <<$\\, $u, ${, Bin/binary, $}>>;
Other -> <<Other/utf8>>
end,
inspect_maybe_utf8_string(Rest, <<Acc/binary, Escaped/binary>>);
diff --git a/test/gleam/string_test.gleam b/test/gleam/string_test.gleam
index b21b213..9a1a315 100644
--- a/test/gleam/string_test.gleam
+++ b/test/gleam/string_test.gleam
@@ -688,14 +688,26 @@ pub fn inspect_test() {
string.inspect("\f")
|> should.equal("\"\\f\"")
- string.inspect("\u{08}")
- |> should.equal("\"\\b\"")
+ string.inspect("\u{0008}")
+ |> should.equal("\"\\u{0008}\"")
- string.inspect("\u{0B}")
- |> should.equal("\"\\v\"")
+ string.inspect("\u{000B}")
+ |> should.equal("\"\\u{000B}\"")
- string.inspect("\u{1B}")
- |> should.equal("\"\\e\"")
+ string.inspect("\u{001B}")
+ |> should.equal("\"\\u{001B}\"")
+
+ string.inspect("\u{0015}")
+ |> should.equal("\"\\u{0015}\"")
+
+ string.inspect("\u{001F}")
+ |> should.equal("\"\\u{001F}\"")
+
+ string.inspect("\u{0020}")
+ |> should.equal("\" \"")
+
+ string.inspect("\u{007F}")
+ |> should.equal("\"\\u{007F}\"")
string.inspect("\r\r")
|> should.equal("\"\\r\\r\"")
@@ -730,23 +742,23 @@ pub fn inspect_test() {
string.inspect("\f\t")
|> should.equal("\"\\f\\t\"")
- string.inspect("\t\u{08}")
- |> should.equal("\"\\t\\b\"")
+ string.inspect("\t\u{0008}")
+ |> should.equal("\"\\t\\u{0008}\"")
- string.inspect("\u{08}\t")
- |> should.equal("\"\\b\\t\"")
+ string.inspect("\u{0008}\t")
+ |> should.equal("\"\\u{0008}\\t\"")
- string.inspect("\t\u{0B}")
- |> should.equal("\"\\t\\v\"")
+ string.inspect("\t\u{000B}")
+ |> should.equal("\"\\t\\u{000B}\"")
- string.inspect("\u{0B}\t")
- |> should.equal("\"\\v\\t\"")
+ string.inspect("\u{000B}\t")
+ |> should.equal("\"\\u{000B}\\t\"")
- string.inspect("\t\u{1B}")
- |> should.equal("\"\\t\\e\"")
+ string.inspect("\t\u{001B}")
+ |> should.equal("\"\\t\\u{001B}\"")
- string.inspect("\u{1B}\t")
- |> should.equal("\"\\e\\t\"")
+ string.inspect("\u{001B}\t")
+ |> should.equal("\"\\u{001B}\\t\"")
string.inspect("\\\n\\")
|> should.equal("\"\\\\\\n\\\\\"")