Drop separate token type for unnumbered headings and use heading 2 instead

This commit is contained in:
Veronica Berglyd Olsen
2024-03-13 15:54:14 +01:00
parent 9da99e3183
commit c0f48b91e6
7 changed files with 12 additions and 35 deletions
-4
View File
@@ -256,10 +256,6 @@ class ToHtml(Tokenizer):
tHead = tText.replace(nwHeadFmt.BR, "<br/>") tHead = tText.replace(nwHeadFmt.BR, "<br/>")
lines.append(f"<h1 class='title'{hStyle}>{aNm}{tHead}</h1>\n") lines.append(f"<h1 class='title'{hStyle}>{aNm}{tHead}</h1>\n")
elif tType == self.T_UNNUM:
tHead = tText.replace(nwHeadFmt.BR, "<br/>")
lines.append(f"<{h2}{hStyle}>{aNm}{tHead}</{h2}>\n")
elif tType == self.T_HEAD1: elif tType == self.T_HEAD1:
tHead = tText.replace(nwHeadFmt.BR, "<br/>") tHead = tText.replace(nwHeadFmt.BR, "<br/>")
lines.append(f"<{h1}{h1Cl}{hStyle}>{aNm}{tHead}</{h1}>\n") lines.append(f"<{h1}{h1Cl}{hStyle}>{aNm}{tHead}</{h1}>\n")
+9 -12
View File
@@ -88,14 +88,13 @@ class Tokenizer(ABC):
T_COMMENT = 4 # Comment line T_COMMENT = 4 # Comment line
T_KEYWORD = 5 # Command line T_KEYWORD = 5 # Command line
T_TITLE = 6 # Title T_TITLE = 6 # Title
T_UNNUM = 7 # Unnumbered T_HEAD1 = 7 # Heading 1
T_HEAD1 = 8 # Heading 1 T_HEAD2 = 8 # Heading 2
T_HEAD2 = 9 # Heading 2 T_HEAD3 = 9 # Heading 3
T_HEAD3 = 10 # Heading 3 T_HEAD4 = 10 # Heading 4
T_HEAD4 = 11 # Heading 4 T_TEXT = 11 # Text line
T_TEXT = 12 # Text line T_SEP = 12 # Scene separator
T_SEP = 13 # Scene separator T_SKIP = 13 # Paragraph break
T_SKIP = 14 # Paragraph break
# Block Style # Block Style
A_NONE = 0x0000 # No special style A_NONE = 0x0000 # No special style
@@ -111,7 +110,7 @@ class Tokenizer(ABC):
A_IND_R = 0x0200 # Right indentation A_IND_R = 0x0200 # Right indentation
# Lookups # Lookups
L_HEADINGS = [T_TITLE, T_UNNUM, T_HEAD1, T_HEAD2, T_HEAD3, T_HEAD4] L_HEADINGS = [T_TITLE, T_HEAD1, T_HEAD2, T_HEAD3, T_HEAD4]
def __init__(self, project: NWProject) -> None: def __init__(self, project: NWProject) -> None:
@@ -607,20 +606,18 @@ class Tokenizer(ABC):
nHead += 1 nHead += 1
tText = aLine[3:].strip() tText = aLine[3:].strip()
tType = self.T_HEAD2
tStyle = self.A_NONE tStyle = self.A_NONE
tFormat = self._fmtChapter if isPlain else self._fmtUnNum tFormat = self._fmtChapter if isPlain else self._fmtUnNum
if self._isNovel: if self._isNovel:
if isPlain: if isPlain:
self._hFormatter.incChapter() self._hFormatter.incChapter()
tText = self._hFormatter.apply(tFormat, tText, nHead) tText = self._hFormatter.apply(tFormat, tText, nHead)
tType = self.T_HEAD2 if isPlain else self.T_UNNUM
tStyle = self._chapterStyle tStyle = self._chapterStyle
self._noSep = True self._noSep = True
self._hFormatter.resetScene() self._hFormatter.resetScene()
self._tokens.append(( self._tokens.append((
tType, nHead, tText, [], tStyle self.T_HEAD2, nHead, tText, [], tStyle
)) ))
if self._keepMarkdown: if self._keepMarkdown:
tmpMarkdown.append(f"{aLine}\n") tmpMarkdown.append(f"{aLine}\n")
-4
View File
@@ -145,10 +145,6 @@ class ToMarkdown(Tokenizer):
tHead = tText.replace(nwHeadFmt.BR, "\n") tHead = tText.replace(nwHeadFmt.BR, "\n")
lines.append(f"# {tHead}\n\n") lines.append(f"# {tHead}\n\n")
elif tType == self.T_UNNUM:
tHead = tText.replace(nwHeadFmt.BR, "\n")
lines.append(f"## {tHead}\n\n")
elif tType == self.T_HEAD1: elif tType == self.T_HEAD1:
tHead = tText.replace(nwHeadFmt.BR, "\n") tHead = tText.replace(nwHeadFmt.BR, "\n")
lines.append(f"# {tHead}\n\n") lines.append(f"# {tHead}\n\n")
-4
View File
@@ -450,10 +450,6 @@ class ToOdt(Tokenizer):
tHead = tText.replace(nwHeadFmt.BR, "\n") tHead = tText.replace(nwHeadFmt.BR, "\n")
self._addTextPar("Title", oStyle, tHead, isHead=False) # Title must be text:p self._addTextPar("Title", oStyle, tHead, isHead=False) # Title must be text:p
elif tType == self.T_UNNUM:
tHead = tText.replace(nwHeadFmt.BR, "\n")
self._addTextPar("Heading_20_2", oStyle, tHead, isHead=True, oLevel="2")
elif tType == self.T_HEAD1: elif tType == self.T_HEAD1:
tHead = tText.replace(nwHeadFmt.BR, "\n") tHead = tText.replace(nwHeadFmt.BR, "\n")
self._addTextPar("Heading_20_1", oStyle, tHead, isHead=True, oLevel="1") self._addTextPar("Heading_20_1", oStyle, tHead, isHead=True, oLevel="1")
+1 -1
View File
@@ -288,7 +288,7 @@ def testCoreToHtml_ConvertDirect(mockGUI):
# Unnumbered # Unnumbered
html._tokens = [ html._tokens = [
(html.T_UNNUM, 1, "Prologue", None, html.A_PBB), (html.T_HEAD2, 1, "Prologue", None, html.A_PBB),
(html.T_EMPTY, 1, "", None, html.A_NONE), (html.T_EMPTY, 1, "", None, html.A_NONE),
] ]
html.doConvert() html.doConvert()
+2 -2
View File
@@ -419,7 +419,7 @@ def testCoreToken_HeaderFormat(mockGUI):
tokens.tokenizeText() tokens.tokenizeText()
assert tokens._tokens == [ assert tokens._tokens == [
(Tokenizer.T_UNNUM, 1, "Prologue", [], Tokenizer.A_PBB), (Tokenizer.T_HEAD2, 1, "Prologue", [], Tokenizer.A_PBB),
(Tokenizer.T_EMPTY, 1, "", [], Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", [], Tokenizer.A_NONE),
] ]
assert tokens.allMarkdown[-1] == "##! Prologue\n\n" assert tokens.allMarkdown[-1] == "##! Prologue\n\n"
@@ -1340,7 +1340,7 @@ def testCoreToken_ProcessHeaders(mockGUI):
tokens.setUnNumberedFormat(f"U: {nwHeadFmt.TITLE}") tokens.setUnNumberedFormat(f"U: {nwHeadFmt.TITLE}")
tokens.tokenizeText() tokens.tokenizeText()
assert tokens._tokens == [ assert tokens._tokens == [
(Tokenizer.T_UNNUM, 1, "U: Prologue", [], Tokenizer.A_PBB), (Tokenizer.T_HEAD2, 1, "U: Prologue", [], Tokenizer.A_PBB),
(Tokenizer.T_EMPTY, 1, "", [], Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", [], Tokenizer.A_NONE),
] ]
-8
View File
@@ -213,14 +213,6 @@ def testCoreToMarkdown_ConvertDirect(mockGUI):
toMD.doConvert() toMD.doConvert()
assert toMD.result == "# A Title\n\n" assert toMD.result == "# A Title\n\n"
# Unnumbered
toMD._tokens = [
(toMD.T_UNNUM, 1, "Prologue", None, toMD.A_PBB),
(toMD.T_EMPTY, 1, "", None, toMD.A_NONE),
]
toMD.doConvert()
assert toMD.result == "## Prologue\n\n"
# Separators # Separators
# ========== # ==========