Commit 3b60224bae16f36e0b6caf13fe1e119b9fa1f6b1
1 parent
b74e7989
JSONHandler: pass JSON object to array start function
Showing
4 changed files
with
12 additions
and
7 deletions
libqpdf/JSONHandler.cc
| @@ -69,7 +69,7 @@ JSONHandler::addFallbackDictHandler(std::shared_ptr<JSONHandler> fdh) | @@ -69,7 +69,7 @@ JSONHandler::addFallbackDictHandler(std::shared_ptr<JSONHandler> fdh) | ||
| 69 | } | 69 | } |
| 70 | 70 | ||
| 71 | void | 71 | void |
| 72 | -JSONHandler::addArrayHandlers(void_handler_t start_fn, | 72 | +JSONHandler::addArrayHandlers(json_handler_t start_fn, |
| 73 | void_handler_t end_fn, | 73 | void_handler_t end_fn, |
| 74 | std::shared_ptr<JSONHandler> ah) | 74 | std::shared_ptr<JSONHandler> ah) |
| 75 | { | 75 | { |
| @@ -144,7 +144,7 @@ JSONHandler::handle(std::string const& path, JSON j) | @@ -144,7 +144,7 @@ JSONHandler::handle(std::string const& path, JSON j) | ||
| 144 | } | 144 | } |
| 145 | if (this->m->h.array_start_handler && j.isArray()) | 145 | if (this->m->h.array_start_handler && j.isArray()) |
| 146 | { | 146 | { |
| 147 | - this->m->h.array_start_handler(path); | 147 | + this->m->h.array_start_handler(path, j); |
| 148 | size_t i = 0; | 148 | size_t i = 0; |
| 149 | j.forEachArrayItem([&i, &path, this](JSON v) { | 149 | j.forEachArrayItem([&i, &path, this](JSON v) { |
| 150 | this->m->h.array_item_handler->handle( | 150 | this->m->h.array_item_handler->handle( |
libqpdf/qpdf/JSONHandler.hh
| @@ -66,7 +66,7 @@ class JSONHandler | @@ -66,7 +66,7 @@ class JSONHandler | ||
| 66 | void addFallbackDictHandler(std::shared_ptr<JSONHandler>); | 66 | void addFallbackDictHandler(std::shared_ptr<JSONHandler>); |
| 67 | 67 | ||
| 68 | QPDF_DLL | 68 | QPDF_DLL |
| 69 | - void addArrayHandlers(void_handler_t start_fn, | 69 | + void addArrayHandlers(json_handler_t start_fn, |
| 70 | void_handler_t end_fn, | 70 | void_handler_t end_fn, |
| 71 | std::shared_ptr<JSONHandler> item_handlers); | 71 | std::shared_ptr<JSONHandler> item_handlers); |
| 72 | 72 | ||
| @@ -102,7 +102,7 @@ class JSONHandler | @@ -102,7 +102,7 @@ class JSONHandler | ||
| 102 | bool_handler_t bool_handler; | 102 | bool_handler_t bool_handler; |
| 103 | json_handler_t dict_start_handler; | 103 | json_handler_t dict_start_handler; |
| 104 | void_handler_t dict_end_handler; | 104 | void_handler_t dict_end_handler; |
| 105 | - void_handler_t array_start_handler; | 105 | + json_handler_t array_start_handler; |
| 106 | void_handler_t array_end_handler; | 106 | void_handler_t array_end_handler; |
| 107 | void_handler_t final_handler; | 107 | void_handler_t final_handler; |
| 108 | std::map<std::string, std::shared_ptr<JSONHandler>> dict_handlers; | 108 | std::map<std::string, std::shared_ptr<JSONHandler>> dict_handlers; |
libtests/json_handler.cc
| @@ -71,8 +71,7 @@ static std::shared_ptr<JSONHandler> make_all_handler() | @@ -71,8 +71,7 @@ static std::shared_ptr<JSONHandler> make_all_handler() | ||
| 71 | auto h5s = std::make_shared<JSONHandler>(); | 71 | auto h5s = std::make_shared<JSONHandler>(); |
| 72 | h->addDictKeyHandler("five", h5s); | 72 | h->addDictKeyHandler("five", h5s); |
| 73 | h5s->addArrayHandlers( | 73 | h5s->addArrayHandlers( |
| 74 | - make_print_message("array begin"), | ||
| 75 | - make_print_message("array end"), | 74 | + print_json, make_print_message("array end"), |
| 76 | h5); | 75 | h5); |
| 77 | auto h6 = std::make_shared<JSONHandler>(); | 76 | auto h6 = std::make_shared<JSONHandler>(); |
| 78 | h6->addDictHandlers( | 77 | h6->addDictHandlers( |
libtests/qtest/json_handler/json_handler.out
| @@ -25,7 +25,13 @@ | @@ -25,7 +25,13 @@ | ||
| 25 | "three": true, | 25 | "three": true, |
| 26 | "two": 3.14 | 26 | "two": 3.14 |
| 27 | } | 27 | } |
| 28 | -.five: json: array begin | 28 | +.five: json: [ |
| 29 | + "x", | ||
| 30 | + false, | ||
| 31 | + "y", | ||
| 32 | + null, | ||
| 33 | + true | ||
| 34 | +] | ||
| 29 | .five[0]: string: x | 35 | .five[0]: string: x |
| 30 | .five[1]: bool: false | 36 | .five[1]: bool: false |
| 31 | .five[2]: string: y | 37 | .five[2]: string: y |