From 0dec7e6bd8b2cda020ef1e05215250cf76480da3 Mon Sep 17 00:00:00 2001 From: SkeleyM <86805089+SkeleyM@users.noreply.github.com> Date: Sat, 1 Feb 2025 20:24:49 +0000 Subject: [PATCH 1/2] Refactor allowing colons --- tagstudio/src/core/query_lang/tokenizer.py | 26 ++++++++++++---------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/tagstudio/src/core/query_lang/tokenizer.py b/tagstudio/src/core/query_lang/tokenizer.py index ba86abdf4..3fbd302c9 100644 --- a/tagstudio/src/core/query_lang/tokenizer.py +++ b/tagstudio/src/core/query_lang/tokenizer.py @@ -93,22 +93,24 @@ def __unquoted_string_or_constraint_type(self) -> Token: start = self.pos - while self.current_char not in self.NOT_IN_ULITERAL and self.current_char is not None: + while self.current_char is not None: + if self.current_char in self.NOT_IN_ULITERAL: + if self.current_char == ":": + if len(out) == 0: + raise ParsingError(self.pos, self.pos) + constraint_type = ConstraintType.from_string(out) + if constraint_type is not None: + self.__advance() + return Token(TokenType.CONSTRAINTTYPE, constraint_type, start, self.pos) + else: + break + out += self.current_char self.__advance() - end = self.pos - 1 - if self.current_char == ":": - if len(out) == 0: - raise ParsingError(self.pos, self.pos) - self.__advance() - constraint_type = ConstraintType.from_string(out) - if constraint_type is None: - raise ParsingError(start, end, f'Invalid ContraintType "{out}"') - return Token(TokenType.CONSTRAINTTYPE, constraint_type, start, end) - else: - return Token(TokenType.ULITERAL, out, start, end) + end = self.pos - 1 + return Token(TokenType.ULITERAL, out, start, end) def __quoted_string(self) -> Token: start = self.pos From d797e8936d8257076b3e874959bc37c360bd476b Mon Sep 17 00:00:00 2001 From: SkeleyM <86805089+SkeleyM@users.noreply.github.com> Date: Sat, 1 Feb 2025 20:29:47 +0000 Subject: [PATCH 2/2] fix formatting --- tagstudio/src/core/query_lang/tokenizer.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tagstudio/src/core/query_lang/tokenizer.py b/tagstudio/src/core/query_lang/tokenizer.py index 3fbd302c9..cc87664c6 100644 --- a/tagstudio/src/core/query_lang/tokenizer.py +++ b/tagstudio/src/core/query_lang/tokenizer.py @@ -108,7 +108,6 @@ def __unquoted_string_or_constraint_type(self) -> Token: out += self.current_char self.__advance() - end = self.pos - 1 return Token(TokenType.ULITERAL, out, start, end)