Skip to content

Commit 8a4649a

Browse files
jaredlyjordwalke
authored andcommitted
get -use-stdin working
1 parent 7ea0cb3 commit 8a4649a

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

src/reason_astjson.ml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -936,8 +936,11 @@ type full = structure * commentWithCategory [@@deriving yojson]
936936
let print_ast (ast:Parsetree.structure) comments =
937937
print_endline (Yojson.Safe.to_string (full_to_yojson (ast, comments)));;
938938

939-
let parse_ast (filename:string) =
940-
match (full_of_yojson (Yojson.Safe.from_file filename)) with
941-
| Result.Ok data -> (data, false, false)
942-
| Result.Error message -> failwith ("Provided JSON doesn't match reason AST format: " ^ message)
943-
;;
939+
let parse_ast use_stdin (filename:string) =
940+
let json = if use_stdin then
941+
Yojson.Safe.from_channel Pervasives.stdin
942+
else (Yojson.Safe.from_file filename) in
943+
match (full_of_yojson json) with
944+
| Result.Ok data -> (data, false, false)
945+
| Result.Error message -> failwith ("Provided JSON doesn't match reason AST format: " ^ message)
946+
;;

src/refmt_impl.ml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ let default_print_width = 100
1111
let defaultImplementationParserFor use_stdin filename =
1212
if Filename.check_suffix filename ".re" then (Reason_toolchain.JS.canonical_implementation_with_comments (Reason_toolchain.setup_lexbuf use_stdin filename), false, false)
1313
else if Filename.check_suffix filename ".ml" then (Reason_toolchain.ML.canonical_implementation_with_comments (Reason_toolchain.setup_lexbuf use_stdin filename), true, false)
14-
else if Filename.check_suffix filename ".json" then Reason_astjson.parse_ast filename
14+
else if Filename.check_suffix filename ".json" then Reason_astjson.parse_ast use_stdin filename
1515
else (
1616
raise (Invalid_config ("Cannot determine default implementation parser for filename '" ^ filename ^ "'."))
1717
)
@@ -193,7 +193,7 @@ let () =
193193
| Some "binary" -> ocamlBinaryParser use_stdin filename false
194194
| Some "ml" -> (Reason_toolchain.ML.canonical_implementation_with_comments (Reason_toolchain.setup_lexbuf use_stdin filename), true, false)
195195
| Some "re" -> (Reason_toolchain.JS.canonical_implementation_with_comments (Reason_toolchain.setup_lexbuf use_stdin filename), false, false)
196-
| Some "json" -> Reason_astjson.parse_ast filename
196+
| Some "json" -> Reason_astjson.parse_ast use_stdin filename
197197
| Some s -> (
198198
raise (Invalid_config ("Invalid -parse setting for interface '" ^ s ^ "'."))
199199
)

0 commit comments

Comments
 (0)