Skip to content

Commit f18c70b

Browse files
committed
feat: add parse/parseExn
1 parent 9ab6329 commit f18c70b

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

examples/DecodeExample.res

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ let data = `{
2929
]
3030
}`
3131

32-
let _ = data->Js.Json.parseExn->Json.decode(Decode.polyline)->Js.log
32+
let _ = data->Json.parseExn->Json.decode(Decode.polyline)->Js.log

src/Json.res

+13
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,17 @@
11
module Encode = Json_Encode
22
module Decode = Json_Decode
33

4+
exception ParseError(string)
5+
46
let decode = Decode.decode
7+
8+
let parse = str =>
9+
try Ok(str->Js.Json.parseExn) catch {
10+
| Js.Exn.Error(ex) => Error(ex->Js.Exn.message->Js.Option.getWithDefault("Unknown error", _))
11+
}
12+
13+
let parseExn = str =>
14+
try str->Js.Json.parseExn catch {
15+
| Js.Exn.Error(ex) =>
16+
raise(ParseError(ex->Js.Exn.message->Js.Option.getWithDefault("Unknown error", _)))
17+
}

src/Json.resi

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module Encode = Json_Encode
2+
module Decode = Json_Decode
3+
4+
exception ParseError(string)
5+
6+
let decode: (Js.Json.t, Decode.t<'a>) => result<'a, string>
7+
8+
let parse: string => result<Js.Json.t, string>
9+
let parseExn: string => Js.Json.t

0 commit comments

Comments
 (0)