From 80d34c34496afbe1af9ce7129c4120da9b12412f Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Tue, 21 Jan 2025 22:47:02 +0100 Subject: [PATCH] abstract out tryToParse --- src/libs/codemirror-mgl.ts | 37 +++++++++++-------------------------- 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/src/libs/codemirror-mgl.ts b/src/libs/codemirror-mgl.ts index 24d5a0a4..dcff7e43 100644 --- a/src/libs/codemirror-mgl.ts +++ b/src/libs/codemirror-mgl.ts @@ -14,7 +14,9 @@ CodeMirror.defineMode("mgl", (config, parserConfig) => { ); }); -CodeMirror.registerHelper("lint", "json", (text: string) => { + +function tryToParse(text: string) { + const found: MarkerRangeWithMessage[] = []; try { parse(text); @@ -38,37 +40,20 @@ CodeMirror.registerHelper("lint", "json", (text: string) => { }); } } + return found; +} + +CodeMirror.registerHelper("lint", "json", (text: string) => { + return tryToParse(text); }); CodeMirror.registerHelper("lint", "mgl", (text: string, opts: any, doc: any) => { - const found: MarkerRangeWithMessage[] = []; + + const found: MarkerRangeWithMessage[] = tryToParse(text); + const {context} = opts; - try { - parse(text); - } - catch (err: any) { - - const errorMatch = err.toString().match(/line (\d+), column (\d+)/); - if (errorMatch) { - const loc = { - first_line: parseInt(errorMatch[1], 10), - first_column: parseInt(errorMatch[2], 10), - last_line: parseInt(errorMatch[1], 10), - last_column: parseInt(errorMatch[2], 10) - }; - - // const loc = hash.loc; - found.push({ - from: CodeMirror.Pos(loc.first_line - 1, loc.first_column), - to: CodeMirror.Pos(loc.last_line - 1, loc.last_column), - message: err - }); - } - - } - if (found.length > 0) { // JSON invalid so don't go any further return found;