-
* Replace --create-from-json=file with --json-input, which causes the regular input to be treated as json. * Eliminate --to-json * In --json=2, bring back "objects" and eliminate "objectinfo". Stream data is never present. * In --json-output=2, write "qpdf-v2" with "objects" and include stream data.
-
There are no automated tests yet, but committing work so far in preparation for some refactoring.
-
This makes it a lot easier to run parts of the test suite.
-
This is taken from an unrelased change to qtest.
-
moddify -> modify. Also carefully spell checked all remaining keys by splitting them into words and running a spell checker, not just relying on visual proofreading. That was the only one.
-
Not fully exercised in this commit
-
Update getJSON() methods and calls to them
-
This script was used on test data: ---------- #!/usr/bin/env python3 import json import sys import re def json_dumps(data): return json.dumps(data, ensure_ascii=False, indent=2, separators=(',', ': ')) for filename in sys.argv[1:]: with open(filename, 'r') as f: data = json.loads(f.read()) if 'objectinfo' not in data: continue trailer = None to_sort = [] for k, v in data['objectinfo'].items(): if k == 'trailer': trailer = v else: m = re.match(r'^(\d+) \d+ R', k) if m: to_sort.append([int(m.group(1)), k, v]) newobjectinfo = {x[1]: x[2] for x in sorted(to_sort)} if trailer is not None: newobjectinfo['trailer'] = trailer data['objectinfo'] = newobjectinfo print(json_dumps(data)) ---------- -
Testing json against schema requires an in-memory copy, so do it only when requested by the test suite.
-
Bidirectional base64; will be used by JSON v2.
-
I had some ideas about some more convenience methods from discussions with some developers, but I decided that the newly added ones cover most of the use cases. The other ideas were too hard to explain clearly and therefore too specialized to put into the public API, where I would have to support them for a long time.