aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libqpdf/JSONHandler.cc4
-rw-r--r--libqpdf/qpdf/JSONHandler.hh4
-rw-r--r--libtests/json_handler.cc9
-rw-r--r--libtests/qtest/json_handler/json_handler.out42
4 files changed, 45 insertions, 14 deletions
diff --git a/libqpdf/JSONHandler.cc b/libqpdf/JSONHandler.cc
index 28e97218..121ae8a2 100644
--- a/libqpdf/JSONHandler.cc
+++ b/libqpdf/JSONHandler.cc
@@ -49,7 +49,7 @@ JSONHandler::addBoolHandler(bool_handler_t fn)
}
void
-JSONHandler::addDictHandlers(void_handler_t start_fn, void_handler_t end_fn)
+JSONHandler::addDictHandlers(json_handler_t start_fn, void_handler_t end_fn)
{
this->m->h.dict_start_handler = start_fn;
this->m->h.dict_end_handler = end_fn;
@@ -111,7 +111,7 @@ JSONHandler::handle(std::string const& path, JSON j)
}
if (this->m->h.dict_start_handler && j.isDictionary())
{
- this->m->h.dict_start_handler(path);
+ this->m->h.dict_start_handler(path, j);
std::string path_base = path;
if (path_base != ".")
{
diff --git a/libqpdf/qpdf/JSONHandler.hh b/libqpdf/qpdf/JSONHandler.hh
index dbea505f..2db951b5 100644
--- a/libqpdf/qpdf/JSONHandler.hh
+++ b/libqpdf/qpdf/JSONHandler.hh
@@ -58,7 +58,7 @@ class JSONHandler
void addBoolHandler(bool_handler_t fn);
QPDF_DLL
- void addDictHandlers(void_handler_t start_fn, void_handler_t end_fn);
+ void addDictHandlers(json_handler_t start_fn, void_handler_t end_fn);
QPDF_DLL
void addDictKeyHandler(
std::string const& key, std::shared_ptr<JSONHandler>);
@@ -100,7 +100,7 @@ class JSONHandler
string_handler_t string_handler;
string_handler_t number_handler;
bool_handler_t bool_handler;
- void_handler_t dict_start_handler;
+ json_handler_t dict_start_handler;
void_handler_t dict_end_handler;
void_handler_t array_start_handler;
void_handler_t array_end_handler;
diff --git a/libtests/json_handler.cc b/libtests/json_handler.cc
index 618395d5..dcc8e66e 100644
--- a/libtests/json_handler.cc
+++ b/libtests/json_handler.cc
@@ -49,8 +49,7 @@ static std::shared_ptr<JSONHandler> make_all_handler()
{
auto h = std::make_shared<JSONHandler>();
h->addDictHandlers(
- make_print_message("dict begin"),
- make_print_message("dict end"));
+ print_json, make_print_message("dict end"));
auto h1 = std::make_shared<JSONHandler>();
h1->addStringHandler(print_string);
h->addDictKeyHandler("one", h1);
@@ -77,13 +76,11 @@ static std::shared_ptr<JSONHandler> make_all_handler()
h5);
auto h6 = std::make_shared<JSONHandler>();
h6->addDictHandlers(
- make_print_message("dict begin"),
- make_print_message("dict end"));
+ print_json, make_print_message("dict end"));
auto h6a = std::make_shared<JSONHandler>();
h6->addDictKeyHandler("a", h6a);
h6a->addDictHandlers(
- make_print_message("dict begin"),
- make_print_message("dict end"));
+ print_json, make_print_message("dict end"));
auto h6ab = std::make_shared<JSONHandler>();
h6a->addDictKeyHandler("b", h6ab);
auto h6ax = std::make_shared<JSONHandler>();
diff --git a/libtests/qtest/json_handler/json_handler.out b/libtests/qtest/json_handler/json_handler.out
index 368c94b5..d9d99660 100644
--- a/libtests/qtest/json_handler/json_handler.out
+++ b/libtests/qtest/json_handler/json_handler.out
@@ -1,7 +1,30 @@
-- scalar --
.: string: potato
-- all --
-.: json: dict begin
+.: json: {
+ "five": [
+ "x",
+ false,
+ "y",
+ null,
+ true
+ ],
+ "four": [
+ "a",
+ 1
+ ],
+ "one": "potato",
+ "phour": null,
+ "six": {
+ "a": {
+ "Q": "baaa",
+ "b": "quack"
+ },
+ "b": "moo"
+ },
+ "three": true,
+ "two": 3.14
+}
.five: json: array begin
.five[0]: string: x
.five[1]: bool: false
@@ -15,8 +38,17 @@
]
.one: string: potato
.phour: json: null
-.six: json: dict begin
-.six.a: json: dict begin
+.six: json: {
+ "a": {
+ "Q": "baaa",
+ "b": "quack"
+ },
+ "b": "moo"
+}
+.six.a: json: {
+ "Q": "baaa",
+ "b": "quack"
+}
.six.a.Q: json: "baaa"
.six.a.b: string: quack
.six.a: json: dict end
@@ -27,5 +59,7 @@
.: json: dict end
-- errors --
bad type at top: JSON handler: value at . is not of expected type
-.: json: dict begin
+.: json: {
+ "x": "y"
+}
unexpected key: JSON handler found unexpected key x in object at .