aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorinoas <mail@inoas.com>2022-06-08 19:36:47 +0000
committerGitHub <noreply@github.com>2022-06-08 20:36:47 +0100
commit28ebbd29a171ceebe74c075f6a05ef86b727e002 (patch)
treef0b7862513577ac58eb2c64aef954c094f08bf2c /src
parentdd5a95548f43097e1aea624fc1e1576f4140f897 (diff)
downloadgleam_stdlib-28ebbd29a171ceebe74c075f6a05ef86b727e002.tar.gz
gleam_stdlib-28ebbd29a171ceebe74c075f6a05ef86b727e002.zip
fix io.debug to behave the same on Erlang and JavaScript (#308)
Diffstat (limited to 'src')
-rw-r--r--src/gleam/io.gleam25
-rw-r--r--src/gleam/string.gleam11
2 files changed, 13 insertions, 23 deletions
diff --git a/src/gleam/io.gleam b/src/gleam/io.gleam
index 5a485c9..3e4fadb 100644
--- a/src/gleam/io.gleam
+++ b/src/gleam/io.gleam
@@ -1,3 +1,5 @@
+import gleam/string
+
/// Writes a string to standard output.
///
/// If you want your output to be printed on its own line see `println`.
@@ -48,7 +50,7 @@ if javascript {
"../gleam_stdlib.mjs" "log"
}
-/// Prints a value to standard output using Erlang syntax.
+/// Prints a value to standard output (stdout) yielding Gleam syntax.
///
/// The value is returned after being printed so it can be used in pipelines.
///
@@ -73,24 +75,9 @@ if javascript {
/// ```
///
pub fn debug(term: anything) -> anything {
- debug_print(term)
term
-}
-
-if erlang {
- fn debug_print(term: anything) -> DoNotLeak {
- erlang_fwrite("~tp\n", [term])
- }
-}
+ |> string.inspect
+ |> println
-if javascript {
- external fn debug_print(anything) -> Nil =
- "../gleam_stdlib.mjs" "debug"
-}
-
-if erlang {
- external type DoNotLeak
-
- external fn erlang_fwrite(String, List(a)) -> DoNotLeak =
- "io" "fwrite"
+ term
}
diff --git a/src/gleam/string.gleam b/src/gleam/string.gleam
index d06e2dd..a25bdd7 100644
--- a/src/gleam/string.gleam
+++ b/src/gleam/string.gleam
@@ -6,6 +6,7 @@ import gleam/list
import gleam/option.{None, Option, Some}
import gleam/order
import gleam/string_builder
+import gleam/string_builder.{StringBuilder}
if erlang {
import gleam/result
@@ -824,17 +825,19 @@ pub fn capitalise(s: String) -> String {
}
}
-pub fn inspect(value: a) -> String {
- do_inspect(value)
+/// Returns a `String` representation of values in Gleam syntax.
+///
+pub fn inspect(term: anything) -> String {
+ do_inspect(term)
|> string_builder.to_string
}
if javascript {
- external fn do_inspect(value: a) -> string_builder.StringBuilder =
+ external fn do_inspect(term: anything) -> StringBuilder =
"../gleam.mjs" "inspect"
}
if erlang {
- external fn do_inspect(value: a) -> string_builder.StringBuilder =
+ external fn do_inspect(term: anything) -> StringBuilder =
"gleam_stdlib" "inspect"
}