From bfa399a2a53ede9cc12a883fecf7e80f527780c8 Mon Sep 17 00:00:00 2001 From: Nico314159 Date: Sun, 3 Sep 2023 21:39:24 -0700 Subject: [PATCH] Support multiline strings in JSON (#34) Uses strict = False --- src/jmc/compile/command/jmc_function.py | 2 +- src/jmc/compile/compiling.py | 2 +- src/jmc/compile/lexer.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/jmc/compile/command/jmc_function.py b/src/jmc/compile/command/jmc_function.py index aa5fc517..00565eae 100644 --- a/src/jmc/compile/command/jmc_function.py +++ b/src/jmc/compile/command/jmc_function.py @@ -280,7 +280,7 @@ def load_arg_json(self, parameter: str) -> dict[str, Any]: :return: JSON """ try: - json = loads(self.args[parameter]) + json = loads(self.args[parameter], strict = False) except JSONDecodeError as error: raise JMCDecodeJSONError( error, self.raw_args[parameter].token, self.tokenizer) from error diff --git a/src/jmc/compile/compiling.py b/src/jmc/compile/compiling.py index e82e0d32..eeff5a66 100644 --- a/src/jmc/compile/compiling.py +++ b/src/jmc/compile/compiling.py @@ -220,7 +220,7 @@ def read_func_tag(path: Path, config: "Configuration") -> dict[str, Any]: with path.open("r", encoding="utf-8") as file: content = file.read() try: - json: dict[str, Any] = loads(content) + json: dict[str, Any] = loads(content, strict = False) json["values"] = [ value for value in json["values"] if not value.startswith(config.namespace + ":")] except JSONDecodeError as error: diff --git a/src/jmc/compile/lexer.py b/src/jmc/compile/lexer.py index f7528adc..1bc76b51 100644 --- a/src/jmc/compile/lexer.py +++ b/src/jmc/compile/lexer.py @@ -402,7 +402,7 @@ def parse_new(self, tokenizer: Tokenizer, suggestion=f"This json was already defined at line {old_json_token.line} col {old_json_token.col} in {old_json_tokenizer.file_path}") try: - json: dict[str, str] = loads(json_content) + json: dict[str, str] = loads(json_content, strict = False) except JSONDecodeError as error: raise JMCDecodeJSONError(error, command[3], tokenizer) from error if not json: