Use stdlib re for Shortcode matching

This commit is contained in:
Veronica Berglyd Olsen
2024-09-22 17:06:57 +02:00
parent c3cb12e5e2
commit 9c63f621a8
2 changed files with 21 additions and 24 deletions
+7 -13
View File
@@ -1116,27 +1116,21 @@ class Tokenizer(ABC):
)
# Match Shortcodes
rxItt = self._rxShortCodes.globalMatch(text, 0)
while rxItt.hasNext():
rxMatch = rxItt.next()
for match in re.finditer(REGEX_PATTERNS.shortcodePlain, text):
temp.append((
rxMatch.capturedStart(1),
rxMatch.capturedLength(1),
self._shortCodeFmt.get(rxMatch.captured(1).lower(), 0),
match.start(1), len(match.group(1)),
self._shortCodeFmt.get(match.group(1).lower(), 0),
"",
))
# Match Shortcode w/Values
rxItt = self._rxShortCodeVals.globalMatch(text, 0)
tHandle = self._handle or ""
while rxItt.hasNext():
rxMatch = rxItt.next()
kind = self._shortCodeVals.get(rxMatch.captured(1).lower(), 0)
for match in re.finditer(REGEX_PATTERNS.shortcodeValue, text):
kind = self._shortCodeVals.get(match.group(1).lower(), 0)
temp.append((
rxMatch.capturedStart(0),
rxMatch.capturedLength(0),
match.start(0), len(match.group(0)),
self.FMT_STRIP if kind == skip else kind,
f"{tHandle}:{rxMatch.captured(2)}",
f"{tHandle}:{match.group(2)}",
))
# Match Dialogue
+14 -11
View File
@@ -34,34 +34,37 @@ from novelwriter.types import QRegExUnicode
class RegExPatterns:
# Static RegExes
_rxItalic = re.compile(nwRegEx.FMT_EI, re.UNICODE)
_rxBold = re.compile(nwRegEx.FMT_EB, re.UNICODE)
_rxStrike = re.compile(nwRegEx.FMT_ST, re.UNICODE)
_rxSCPlain = re.compile(nwRegEx.FMT_SC, re.UNICODE)
_rxSCValue = re.compile(nwRegEx.FMT_SV, re.UNICODE)
@property
def markdownItalic(self) -> re.Pattern:
"""Markdown italic style."""
return re.compile(nwRegEx.FMT_EI, re.UNICODE)
return self._rxItalic
@property
def markdownBold(self) -> re.Pattern:
"""Markdown bold style."""
return re.compile(nwRegEx.FMT_EB, re.UNICODE)
return self._rxBold
@property
def markdownStrike(self) -> re.Pattern:
"""Markdown strikethrough style."""
return re.compile(nwRegEx.FMT_ST, re.UNICODE)
return self._rxStrike
@property
def shortcodePlain(self) -> QRegularExpression:
def shortcodePlain(self) -> re.Pattern:
"""Plain shortcode style."""
rxRule = QRegularExpression(nwRegEx.FMT_SC)
rxRule.setPatternOptions(QRegExUnicode)
return rxRule
return self._rxSCPlain
@property
def shortcodeValue(self) -> QRegularExpression:
def shortcodeValue(self) -> re.Pattern:
"""Plain shortcode style."""
rxRule = QRegularExpression(nwRegEx.FMT_SV)
rxRule.setPatternOptions(QRegExUnicode)
return rxRule
return self._rxSCValue
@property
def dialogStyle(self) -> QRegularExpression: