Commit 0de032bcdd49d50df6a3e4a2e6325e5144c4619e

Authored by m-holger
1 parent 77ceebd6

In JSONParser::handleToken simplify setting of start and end

libqpdf/JSON.cc
... ... @@ -1142,12 +1142,10 @@ JSONParser::handleToken()
1142 1142 switch (lex_state) {
1143 1143 case ls_begin_dict:
1144 1144 item = std::make_shared<JSON>(JSON::makeDictionary());
1145   - item->setStart(token_start);
1146 1145 break;
1147 1146  
1148 1147 case ls_begin_array:
1149 1148 item = std::make_shared<JSON>(JSON::makeArray());
1150   - item->setStart(token_start);
1151 1149 break;
1152 1150  
1153 1151 case ls_colon:
... ... @@ -1306,10 +1304,8 @@ JSONParser::handleToken()
1306 1304  
1307 1305 parser_state_e next_state = ps_top;
1308 1306  
1309   - if (!(item->isArray() || item->isDictionary())) {
1310   - item->setStart(token_start);
1311   - item->setEnd(offset);
1312   - }
  1307 + item->setStart(token_start);
  1308 + item->setEnd(offset);
1313 1309  
1314 1310 switch (parser_state) {
1315 1311 case ps_dict_begin:
... ...
libtests/qtest/json_parse/good-01-react.out
1 1 dictionary start
2 2 dictionary item: a -> [6, 11): "bcd"
3   -dictionary item: e -> [18, 0): []
  3 +dictionary item: e -> [18, 19): []
4 4 array start
5 5 array item: [19, 20): 1
6 6 array item: [41, 42): 2
7 7 array item: [44, 45): 3
8 8 array item: [46, 47): 4
9 9 array item: [48, 54): "five"
10   -array item: [56, 0): {}
  10 +array item: [56, 57): {}
11 11 dictionary start
12 12 dictionary item: six -> [64, 65): 7
13 13 dictionary item: 8 -> [72, 73): 9
... ...
libtests/qtest/json_parse/good-04-react.out
1 1 array start
2   -array item: [1, 0): []
  2 +array item: [1, 2): []
3 3 array start
4   -array item: [2, 0): []
  4 +array item: [2, 3): []
5 5 array start
6   -array item: [3, 0): {}
  6 +array item: [3, 4): {}
7 7 dictionary start
8 8 container end: [3, 5): {}
9 9 container end: [2, 6): []
10   -array item: [8, 0): {}
  10 +array item: [8, 9): {}
11 11 dictionary start
12   -dictionary item: -> [13, 0): {}
  12 +dictionary item: -> [13, 14): {}
13 13 dictionary start
14 14 container end: [13, 15): {}
15 15 container end: [8, 16): {}
... ...
libtests/qtest/json_parse/good-10-react.out
1 1 dictionary start
2   -dictionary item: a -> [9, 0): []
  2 +dictionary item: a -> [9, 10): []
3 3 array start
4 4 array item: [10, 11): 1
5 5 array item: [13, 14): 2
6   -array item: [16, 0): {}
  6 +array item: [16, 17): {}
7 7 dictionary start
8 8 dictionary item: x -> [22, 25): "y"
9 9 container end: [16, 26): {}
10 10 array item: [28, 29): 3
11   -array item: [31, 0): {}
  11 +array item: [31, 32): {}
12 12 dictionary start
13 13 dictionary item: keep -> [40, 61): "not in final output"
14 14 container end: [31, 62): {
15 15 "keep": "not in final output"
16 16 }
17 17 container end: [9, 63): []
18   -dictionary item: keep -> [75, 0): []
  18 +dictionary item: keep -> [75, 76): []
19 19 array start
20 20 array item: [76, 77): 1
21 21 array item: [79, 83): null
... ... @@ -23,7 +23,7 @@ array item: [85, 86): 2
23 23 array item: [88, 93): false
24 24 array item: [95, 101): "keep"
25 25 array item: [103, 104): 3
26   -array item: [106, 0): []
  26 +array item: [106, 107): []
27 27 array start
28 28 array item: [107, 113): "this"
29 29 array item: [115, 121): "keep"
... ...
libtests/qtest/json_parse/good-11-react.out
1 1 array start
2   -array item: [4, 0): []
  2 +array item: [4, 5): []
3 3 array start
4 4 array item: [5, 11): "u:π"
5 5 array item: [13, 23): "u:π"
6 6 array item: [25, 39): "b:EFBBBFCF80"
7 7 array item: [41, 53): "b:feff03c0"
8 8 container end: [4, 54): []
9   -array item: [58, 0): []
  9 +array item: [58, 59): []
10 10 array start
11 11 array item: [59, 67): "u:🥔"
12 12 array item: [69, 85): "u:🥔"
... ...