diff --git a/nw/core/tohtml.py b/nw/core/tohtml.py
index 7ce843ec..93bc1290 100644
--- a/nw/core/tohtml.py
+++ b/nw/core/tohtml.py
@@ -74,19 +74,13 @@ class ToHtml(Tokenizer):
return
def setReplaceUnicode(self, doReplace):
- """Set the translation map to either minimal or full unicode to
+ """Set the translation map to either minimal or full unicode for
html entities replacement.
"""
# Control characters must always be replaced
- # This affects alignment and indenting code, so the Tokenizer
- # must take this into account when parsing for markup using
- # angle brackets.
- self._trMap = str.maketrans({
- "<": "<",
- ">": ">",
- "&": "&",
- })
-
+ # Angle brackets are replaced later as they are also used in
+ # formatting codes
+ self._trMap = str.maketrans({"&": "&"})
if doReplace:
# Extend to all relevant Unicode characters
self._trMap.update(str.maketrans(nwHtmlUnicode.U_TO_H))
@@ -157,6 +151,9 @@ class ToHtml(Tokenizer):
for tType, tLine, tText, tFormat, tStyle in self.theTokens:
+ # Replace < and > before adding html tags
+ tText = tText.replace("<", "<").replace(">", ">")
+
# Styles
aStyle = []
if tStyle is not None and self.cssStyles:
diff --git a/nw/core/tokenizer.py b/nw/core/tokenizer.py
index daa8021b..7dbabc55 100644
--- a/nw/core/tokenizer.py
+++ b/nw/core/tokenizer.py
@@ -459,28 +459,16 @@ class Tokenizer():
if aLine.startswith(">>"):
tagRight = True
aLine = aLine[2:].lstrip(" ")
- elif aLine.startswith(">>"):
- tagRight = True
- aLine = aLine[8:].lstrip(" ")
elif aLine.startswith(">"):
indLeft = True
aLine = aLine[1:].lstrip(" ")
- elif aLine.startswith(">"):
- indLeft = True
- aLine = aLine[4:].lstrip(" ")
if aLine.endswith("<<"):
tagLeft = True
aLine = aLine[:-2].rstrip(" ")
- elif aLine.endswith("<<"):
- tagLeft = True
- aLine = aLine[:-8].rstrip(" ")
elif aLine.endswith("<"):
indRight = True
aLine = aLine[:-1].rstrip(" ")
- elif aLine.endswith("<"):
- indRight = True
- aLine = aLine[:-4].rstrip(" ")
textAlign = defAlign
if tagLeft and tagRight:
diff --git a/tests/test_core/test_core_tohtml.py b/tests/test_core/test_core_tohtml.py
index 30185f42..69e6dd39 100644
--- a/tests/test_core/test_core_tohtml.py
+++ b/tests/test_core/test_core_tohtml.py
@@ -457,11 +457,11 @@ def testCoreToHtml_Methods(mockGUI):
theHtml.tokenizeText()
theHtml.doConvert()
assert theHtml.theMarkdown[-1] == (
- "Text with <brackets> & short–dash, long—dash …\n\n"
+ "Text with & short–dash, long—dash …\n\n"
)
theHtml.doPostProcessing()
assert theHtml.theMarkdown[-1] == (
- "Text with <brackets> & short–dash, long—dash …\n\n"
+ "Text with & short–dash, long—dash …\n\n"
)
# Result Size
diff --git a/tests/test_core/test_core_tokenizer.py b/tests/test_core/test_core_tokenizer.py
index 37623d86..45ac3685 100644
--- a/tests/test_core/test_core_tokenizer.py
+++ b/tests/test_core/test_core_tokenizer.py
@@ -452,48 +452,6 @@ def testCoreToken_Tokenize(mockGUI):
"Right-indent, right-aligned\n\n\n"
)
- # Alignment w/HTML Codes
- theToken.theText = (
- "Some regular text\n\n"
- "Some left-aligned text <<\n\n"
- ">> Some right-aligned text\n\n"
- ">> Some centered text <<\n\n"
- "> Left-indented block\n\n"
- "Right-indented block <\n\n"
- "> Double-indented block <\n\n"
- ">> Right-indent, right-aligned <\n\n"
- )
- theToken.tokenizeText()
- assert theToken.theTokens == [
- (Tokenizer.T_TEXT, 1, "Some regular text", [], Tokenizer.A_NONE),
- (Tokenizer.T_EMPTY, 2, "", None, Tokenizer.A_NONE),
- (Tokenizer.T_TEXT, 3, "Some left-aligned text", [], Tokenizer.A_LEFT),
- (Tokenizer.T_EMPTY, 4, "", None, Tokenizer.A_NONE),
- (Tokenizer.T_TEXT, 5, "Some right-aligned text", [], Tokenizer.A_RIGHT),
- (Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE),
- (Tokenizer.T_TEXT, 7, "Some centered text", [], Tokenizer.A_CENTRE),
- (Tokenizer.T_EMPTY, 8, "", None, Tokenizer.A_NONE),
- (Tokenizer.T_TEXT, 9, "Left-indented block", [], Tokenizer.A_IND_L),
- (Tokenizer.T_EMPTY, 10, "", None, Tokenizer.A_NONE),
- (Tokenizer.T_TEXT, 11, "Right-indented block", [], Tokenizer.A_IND_R),
- (Tokenizer.T_EMPTY, 12, "", None, Tokenizer.A_NONE),
- (Tokenizer.T_TEXT, 13, "Double-indented block", [], dblIndent),
- (Tokenizer.T_EMPTY, 14, "", None, Tokenizer.A_NONE),
- (Tokenizer.T_TEXT, 15, "Right-indent, right-aligned", [], rIndAlign),
- (Tokenizer.T_EMPTY, 16, "", None, Tokenizer.A_NONE),
- (Tokenizer.T_EMPTY, 16, "", None, Tokenizer.A_NONE),
- ]
- assert theToken.theMarkdown[-1] == (
- "Some regular text\n\n"
- "Some left-aligned text\n\n"
- "Some right-aligned text\n\n"
- "Some centered text\n\n"
- "Left-indented block\n\n"
- "Right-indented block\n\n"
- "Double-indented block\n\n"
- "Right-indent, right-aligned\n\n\n"
- )
-
# END Test testCoreToken_Tokenize