mirror of
https://github.com/johnwhitington/cpdf-source.git
synced 2025-06-05 22:09:39 +02:00
Allow any order of keys for JSON bookmarks
This commit is contained in:
@ -66,14 +66,14 @@ let target_of_json_target pdf pagenumber target =
|
|||||||
target_of_markfile_obj pdf pagenumber (Cpdfjson.object_of_json target)
|
target_of_markfile_obj pdf pagenumber (Cpdfjson.object_of_json target)
|
||||||
|
|
||||||
let mark_of_json pdf = function
|
let mark_of_json pdf = function
|
||||||
| `Assoc [("level", `Int level);
|
| `Assoc [("bold", `Bool bold);
|
||||||
("text", `String text);
|
|
||||||
("page", `Int pagenumber);
|
|
||||||
("open", `Bool openstatus);
|
|
||||||
("target", target);
|
|
||||||
("colour", `List [`Float r; `Float g; `Float b]);
|
("colour", `List [`Float r; `Float g; `Float b]);
|
||||||
("italic", `Bool italic);
|
("italic", `Bool italic);
|
||||||
("bold", `Bool bold)] ->
|
("level", `Int level);
|
||||||
|
("open", `Bool openstatus);
|
||||||
|
("page", `Int pagenumber);
|
||||||
|
("target", target);
|
||||||
|
("text", `String text)] ->
|
||||||
{Pdfmarks.level = level;
|
{Pdfmarks.level = level;
|
||||||
Pdfmarks.text = Pdftext.pdfdocstring_of_utf8 text;
|
Pdfmarks.text = Pdftext.pdfdocstring_of_utf8 text;
|
||||||
Pdfmarks.target = target_of_json_target pdf pagenumber target;
|
Pdfmarks.target = target_of_json_target pdf pagenumber target;
|
||||||
@ -82,8 +82,12 @@ let mark_of_json pdf = function
|
|||||||
Pdfmarks.flags = (if italic then 1 else 0) lor ((if bold then 1 else 0) lsl 1)}
|
Pdfmarks.flags = (if italic then 1 else 0) lor ((if bold then 1 else 0) lsl 1)}
|
||||||
| _ -> error "malformed mark in mark_of_json"
|
| _ -> error "malformed mark in mark_of_json"
|
||||||
|
|
||||||
|
let mark_of_json_sort pdf = function
|
||||||
|
| `Assoc l -> mark_of_json pdf (`Assoc (sort compare l))
|
||||||
|
| _ -> error "malformed mark in mark_of_json_sort"
|
||||||
|
|
||||||
let marks_of_json pdf = function
|
let marks_of_json pdf = function
|
||||||
| `List ms -> map (mark_of_json pdf) ms
|
| `List ms -> map (mark_of_json_sort pdf) ms
|
||||||
| _ -> error "top level of JSON boomark file not a list"
|
| _ -> error "top level of JSON boomark file not a list"
|
||||||
|
|
||||||
let parse_bookmark_file_json verify pdf i =
|
let parse_bookmark_file_json verify pdf i =
|
||||||
|
Reference in New Issue
Block a user