From b8ae221987f462e54a92d5cb0e6012123bc42edf Mon Sep 17 00:00:00 2001 From: Inga Kirschnick <inga.kirschnick@uni-bielefeld.de> Date: Mon, 25 Sep 2023 14:40:39 +0200 Subject: [PATCH] Expert Mode - Query Builder Switch Parser v1 --- .../QueryBuilder/GeneralFunctionsQueryBuilder.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/static/js/CorpusAnalysis/QueryBuilder/GeneralFunctionsQueryBuilder.js b/app/static/js/CorpusAnalysis/QueryBuilder/GeneralFunctionsQueryBuilder.js index d6e09303..28f2aeea 100644 --- a/app/static/js/CorpusAnalysis/QueryBuilder/GeneralFunctionsQueryBuilder.js +++ b/app/static/js/CorpusAnalysis/QueryBuilder/GeneralFunctionsQueryBuilder.js @@ -233,7 +233,7 @@ class GeneralFunctionsQueryBuilder { let expertModeInputField = document.querySelector('#corpus-analysis-concordance-form-query'); expertModeInputField.value = ''; let queryBuilderInputFieldValue = Utils.unescape(document.querySelector('#corpus-analysis-concordance-query-preview').innerHTML.trim()); - if (queryBuilderInputFieldValue !== "") { + if (queryBuilderInputFieldValue !== "" && queryBuilderInputFieldValue !== ";") { expertModeInputField.value = queryBuilderInputFieldValue; } } @@ -246,6 +246,7 @@ class GeneralFunctionsQueryBuilder { this.queryChipFactory(chipElement['type'], chipElement['pretty'], chipElement['query']); } } + parseTextToChip(query) { const parsingElementDict = { @@ -301,12 +302,11 @@ class GeneralFunctionsQueryBuilder { pretty: '', type: 'token-incidence-modifier' } - } let chipElements = []; - - const regex = new RegExp(`<s>|<\/s>|<ent>|<ent_type="([A-Z]+)">|<\\\/ent(_type)?>|\\[(word|lemma|pos|simple_pos)=(("[^"]+")|(\\u0027[^\\u0027]+\\u0027)) ?(%c)? ?((\\&|\\|) ?(word|lemma|pos|simple_pos)=(("[^"]+")|(\\u0027[^\\u0027]+\\u0027)) ?(%c)? ?)*\\]|:: ?match\\.text_[A-Za-z]+="[^"]+"|(?<!\\[) ?(\\+|\\?|\\*|{[0-9]+(,[0-9]+)?}) ?(?![^\\]]\\])`, 'gi'); + let regexPattern = Object.keys(parsingElementDict).map(pattern => `(${pattern})`).join('|'); + const regex = new RegExp(regexPattern, 'gi'); let match; while ((match = regex.exec(query)) !== null) { @@ -318,6 +318,7 @@ class GeneralFunctionsQueryBuilder { for (let [pattern, chipElement] of Object.entries(parsingElementDict)) { const parsingRegex = new RegExp(pattern, 'gi'); if (parsingRegex.exec(stringElement)) { + // Creating the pretty text for the chip element let prettyText; switch (pattern) { case '<ent_type="([A-Z]+)">': -- GitLab