Fix float formatting

This commit is contained in:
John Whitington 2020-02-03 09:37:04 +00:00
parent eec4c9b5a1
commit 4aba98d018
1 changed files with 8 additions and 9 deletions

View File

@ -2,13 +2,16 @@ module J = Tjjson
module P = Pdf module P = Pdf
module O = Pdfops module O = Pdfops
(* FIXME jsonlint doesn't like tiny_json's 0., 1. etc. *) let sof = Printf.sprintf "%g" (* To prevent "0." *)
let soi = string_of_int
let string_of_float _ = failwith "use sof"
let string_of_int _ = failwith "use soi"
let rec json_of_object fcs no_stream_data = function let rec json_of_object fcs no_stream_data = function
| P.Null -> J.String "null" | P.Null -> J.String "null"
| P.Boolean b -> J.Bool b | P.Boolean b -> J.Bool b
| P.Integer i -> J.Number (string_of_int i) | P.Integer i -> J.Number (soi i)
| P.Real r -> J.Number (string_of_float r) | P.Real r -> J.Number (sof r)
| P.String s -> J.String s | P.String s -> J.String s
| P.Name n -> J.String n | P.Name n -> J.String n
| P.Array objs -> J.Array (List.map (json_of_object fcs no_stream_data) objs) | P.Array objs -> J.Array (List.map (json_of_object fcs no_stream_data) objs)
@ -28,10 +31,7 @@ let rec json_of_object fcs no_stream_data = function
in in
json_of_object fcs no_stream_data (P.Array [P.Dictionary dict; P.String str]) json_of_object fcs no_stream_data (P.Array [P.Dictionary dict; P.String str])
| P.Stream _ -> J.String "error: stream with not-a-dictioary" | P.Stream _ -> J.String "error: stream with not-a-dictioary"
| P.Indirect i -> J.Number (string_of_int i) | P.Indirect i -> J.Number (soi i)
let sof = string_of_float
let soi = string_of_int
let json_of_op no_stream_data = function let json_of_op no_stream_data = function
| O.Op_S -> J.Array [J.String "S"] | O.Op_S -> J.Array [J.String "S"]
@ -186,7 +186,7 @@ let json_of_pdf parse_content no_stream_data pdf =
in in
J.Array J.Array
(List.map (List.map
(fun (objnum, jsonobj) -> J.Array [J.String (string_of_int objnum); jsonobj]) (fun (objnum, jsonobj) -> J.Array [J.Number (soi objnum); jsonobj])
pairs_parsed) pairs_parsed)
let write fh parse_content no_stream_data pdf = let write fh parse_content no_stream_data pdf =
@ -196,4 +196,3 @@ let write fh parse_content no_stream_data pdf =
Format.pp_print_flush formatter (); Format.pp_print_flush formatter ();
output_string fh (Buffer.contents b) output_string fh (Buffer.contents b)