Fix issue with overlapping formatting (#2012)
This commit is contained in:
@@ -1150,8 +1150,9 @@ class Tokenizer(ABC):
|
|||||||
formats = []
|
formats = []
|
||||||
for pos, n, fmt, key in reversed(sorted(temp, key=lambda x: x[0])):
|
for pos, n, fmt, key in reversed(sorted(temp, key=lambda x: x[0])):
|
||||||
if fmt > 0:
|
if fmt > 0:
|
||||||
result = result[:pos] + result[pos+n:]
|
if n > 0:
|
||||||
formats = [(p-n, f, k) for p, f, k in formats]
|
result = result[:pos] + result[pos+n:]
|
||||||
|
formats = [(p-n if p > pos else p, f, k) for p, f, k in formats]
|
||||||
formats.insert(0, (pos, fmt, key))
|
formats.insert(0, (pos, fmt, key))
|
||||||
|
|
||||||
return result, formats
|
return result, formats
|
||||||
|
|||||||
@@ -1161,6 +1161,24 @@ def testCoreToken_Dialogue(mockGUI):
|
|||||||
Tokenizer.A_NONE
|
Tokenizer.A_NONE
|
||||||
)]
|
)]
|
||||||
|
|
||||||
|
# Special Cases
|
||||||
|
# =============
|
||||||
|
|
||||||
|
# Dialogue + formatting on same index (Issue #2012)
|
||||||
|
tokens._text = "[i]\u201cDialogue text.\u201d[/i]\n"
|
||||||
|
tokens.tokenizeText()
|
||||||
|
assert tokens._tokens == [(
|
||||||
|
Tokenizer.T_TEXT, 0,
|
||||||
|
"\u201cDialogue text.\u201d",
|
||||||
|
[
|
||||||
|
(0, Tokenizer.FMT_I_B, ""),
|
||||||
|
(0, Tokenizer.FMT_DL_B, ""),
|
||||||
|
(16, Tokenizer.FMT_I_E, ""),
|
||||||
|
(16, Tokenizer.FMT_DL_E, ""),
|
||||||
|
],
|
||||||
|
Tokenizer.A_NONE
|
||||||
|
)]
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.core
|
@pytest.mark.core
|
||||||
def testCoreToken_SpecialFormat(mockGUI):
|
def testCoreToken_SpecialFormat(mockGUI):
|
||||||
|
|||||||
Reference in New Issue
Block a user