-
-
Notifications
You must be signed in to change notification settings - Fork 656
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
101 additions
and
53 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
module type DataApi = sig | ||
type data | ||
|
||
val read_optional : data -> (data -> unit) -> unit | ||
|
||
val read_object : data -> (string * data) list | ||
|
||
val read_array : data -> data list | ||
|
||
val read_string : data -> string | ||
|
||
val read_bool : data -> bool | ||
|
||
val read_int : data -> int | ||
|
||
val data_to_string : data -> string | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
open Json | ||
|
||
let error s = | ||
(* TODO: should this raise something else? *) | ||
Error.raise_typing_error s Globals.null_pos | ||
|
||
type data = Json.t | ||
|
||
let read_optional json f = match json with | ||
| JNull -> | ||
() | ||
| _ -> | ||
f json | ||
|
||
let read_object json = match json with | ||
| JObject fl -> | ||
fl | ||
| _ -> | ||
error (Printf.sprintf "Expected JObject, found %s" (string_of_json json)) | ||
|
||
let read_array json = match json with | ||
| JArray l -> | ||
l | ||
| _ -> | ||
error (Printf.sprintf "Expected JArray, found %s" (string_of_json json)) | ||
|
||
let read_string json = match json with | ||
| JString s -> | ||
s | ||
| _ -> | ||
error (Printf.sprintf "Expected JString, found %s" (string_of_json json)) | ||
|
||
let read_int json = match json with | ||
| JInt i -> | ||
i | ||
| _ -> | ||
error (Printf.sprintf "Expected JInt, found %s" (string_of_json json)) | ||
|
||
let read_bool json = match json with | ||
| JBool b -> | ||
b | ||
| _ -> | ||
error (Printf.sprintf "Expected JBool, found %s" (string_of_json json)) | ||
|
||
let data_to_string json = | ||
string_of_json json |