#!/usr/bin/env python3
"""Run json.loads() over every case in cases.json and print the results as
JSON on stdout. Invoked as a subprocess from measure.mjs so the Node side
never has to guess at Python's own error message wording.
"""
import json
import sys


def run(case):
    try:
        json.loads(case["input"])
        return {"accepted": True, "message": None, "position": None}
    except json.JSONDecodeError as e:
        return {
            "accepted": False,
            "message": str(e),
            "position": {"line": e.lineno, "column": e.colno, "offset": e.pos},
        }


def main():
    cases = json.load(sys.stdin)
    results = {case["id"]: run(case) for case in cases}
    json.dump(results, sys.stdout)


if __name__ == "__main__":
    main()
