aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter <peterhsaxton@gmail.com>2020-07-30 09:21:34 +0100
committerPeter <peterhsaxton@gmail.com>2020-07-30 09:21:34 +0100
commitec9652394fc2c394b1dac2dd0d82a1b1457cea7c (patch)
treefba2f64a67a9ce770787dea648b61dde44c03cf8 /src
parentff8b71ddca3b4fb98b2c4f0524d34baad1df02ef (diff)
downloadgleam_json-ec9652394fc2c394b1dac2dd0d82a1b1457cea7c.tar.gz
gleam_json-ec9652394fc2c394b1dac2dd0d82a1b1457cea7c.zip
tested decode function
Diffstat (limited to 'src')
-rw-r--r--src/gleam/json.gleam15
-rw-r--r--src/gleam/json/types.gleam13
2 files changed, 28 insertions, 0 deletions
diff --git a/src/gleam/json.gleam b/src/gleam/json.gleam
new file mode 100644
index 0000000..e1e465b
--- /dev/null
+++ b/src/gleam/json.gleam
@@ -0,0 +1,15 @@
+import gleam/dynamic.{Dynamic}
+import gleam/result
+import gleam/json/types
+
+pub type Json = types.Json
+
+external fn jsone_decode(String) -> types.DecodeResult =
+ "jsone_decode" "decode"
+
+pub fn decode(encoded: String) -> Result(Json, Dynamic) {
+ case jsone_decode(encoded) {
+ types.Ok(json, _rest) -> Ok(json)
+ types.Error(types.Badarg(reason)) -> Error(reason)
+ }
+}
diff --git a/src/gleam/json/types.gleam b/src/gleam/json/types.gleam
new file mode 100644
index 0000000..2e6c78f
--- /dev/null
+++ b/src/gleam/json/types.gleam
@@ -0,0 +1,13 @@
+import gleam/dynamic.{Dynamic}
+
+
+pub external type Json
+
+pub type Failure {
+ Badarg(Dynamic)
+}
+
+pub type DecodeResult {
+ Ok(Json, String)
+ Error(Failure)
+}