From c0f48b91e63781179d637a1f1c51a5d03a07c0fc Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Wed, 13 Mar 2024 15:54:14 +0100 Subject: [PATCH] Drop separate token type for unnumbered headings and use heading 2 instead --- novelwriter/core/tohtml.py | 4 ---- novelwriter/core/tokenizer.py | 21 +++++++++------------ novelwriter/core/tomd.py | 4 ---- novelwriter/core/toodt.py | 4 ---- tests/test_core/test_core_tohtml.py | 2 +- tests/test_core/test_core_tokenizer.py | 4 ++-- tests/test_core/test_core_tomd.py | 8 -------- 7 files changed, 12 insertions(+), 35 deletions(-) diff --git a/novelwriter/core/tohtml.py b/novelwriter/core/tohtml.py index 8e1a67ca..4922e43b 100644 --- a/novelwriter/core/tohtml.py +++ b/novelwriter/core/tohtml.py @@ -256,10 +256,6 @@ class ToHtml(Tokenizer): tHead = tText.replace(nwHeadFmt.BR, "
") lines.append(f"

{aNm}{tHead}

\n") - elif tType == self.T_UNNUM: - tHead = tText.replace(nwHeadFmt.BR, "
") - lines.append(f"<{h2}{hStyle}>{aNm}{tHead}\n") - elif tType == self.T_HEAD1: tHead = tText.replace(nwHeadFmt.BR, "
") lines.append(f"<{h1}{h1Cl}{hStyle}>{aNm}{tHead}\n") diff --git a/novelwriter/core/tokenizer.py b/novelwriter/core/tokenizer.py index 215555c5..d097b442 100644 --- a/novelwriter/core/tokenizer.py +++ b/novelwriter/core/tokenizer.py @@ -88,14 +88,13 @@ class Tokenizer(ABC): T_COMMENT = 4 # Comment line T_KEYWORD = 5 # Command line T_TITLE = 6 # Title - T_UNNUM = 7 # Unnumbered - T_HEAD1 = 8 # Heading 1 - T_HEAD2 = 9 # Heading 2 - T_HEAD3 = 10 # Heading 3 - T_HEAD4 = 11 # Heading 4 - T_TEXT = 12 # Text line - T_SEP = 13 # Scene separator - T_SKIP = 14 # Paragraph break + T_HEAD1 = 7 # Heading 1 + T_HEAD2 = 8 # Heading 2 + T_HEAD3 = 9 # Heading 3 + T_HEAD4 = 10 # Heading 4 + T_TEXT = 11 # Text line + T_SEP = 12 # Scene separator + T_SKIP = 13 # Paragraph break # Block Style A_NONE = 0x0000 # No special style @@ -111,7 +110,7 @@ class Tokenizer(ABC): A_IND_R = 0x0200 # Right indentation # 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: @@ -607,20 +606,18 @@ class Tokenizer(ABC): nHead += 1 tText = aLine[3:].strip() - tType = self.T_HEAD2 tStyle = self.A_NONE tFormat = self._fmtChapter if isPlain else self._fmtUnNum if self._isNovel: if isPlain: self._hFormatter.incChapter() tText = self._hFormatter.apply(tFormat, tText, nHead) - tType = self.T_HEAD2 if isPlain else self.T_UNNUM tStyle = self._chapterStyle self._noSep = True self._hFormatter.resetScene() self._tokens.append(( - tType, nHead, tText, [], tStyle + self.T_HEAD2, nHead, tText, [], tStyle )) if self._keepMarkdown: tmpMarkdown.append(f"{aLine}\n") diff --git a/novelwriter/core/tomd.py b/novelwriter/core/tomd.py index a57ba18f..22a72b5f 100644 --- a/novelwriter/core/tomd.py +++ b/novelwriter/core/tomd.py @@ -145,10 +145,6 @@ class ToMarkdown(Tokenizer): tHead = tText.replace(nwHeadFmt.BR, "\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: tHead = tText.replace(nwHeadFmt.BR, "\n") lines.append(f"# {tHead}\n\n") diff --git a/novelwriter/core/toodt.py b/novelwriter/core/toodt.py index 494b12c4..e3ddebdf 100644 --- a/novelwriter/core/toodt.py +++ b/novelwriter/core/toodt.py @@ -450,10 +450,6 @@ class ToOdt(Tokenizer): tHead = tText.replace(nwHeadFmt.BR, "\n") 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: tHead = tText.replace(nwHeadFmt.BR, "\n") self._addTextPar("Heading_20_1", oStyle, tHead, isHead=True, oLevel="1") diff --git a/tests/test_core/test_core_tohtml.py b/tests/test_core/test_core_tohtml.py index ef6d9b3e..da80e880 100644 --- a/tests/test_core/test_core_tohtml.py +++ b/tests/test_core/test_core_tohtml.py @@ -288,7 +288,7 @@ def testCoreToHtml_ConvertDirect(mockGUI): # Unnumbered 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.doConvert() diff --git a/tests/test_core/test_core_tokenizer.py b/tests/test_core/test_core_tokenizer.py index 03343d0c..7d2299ab 100644 --- a/tests/test_core/test_core_tokenizer.py +++ b/tests/test_core/test_core_tokenizer.py @@ -419,7 +419,7 @@ def testCoreToken_HeaderFormat(mockGUI): tokens.tokenizeText() 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), ] assert tokens.allMarkdown[-1] == "##! Prologue\n\n" @@ -1340,7 +1340,7 @@ def testCoreToken_ProcessHeaders(mockGUI): tokens.setUnNumberedFormat(f"U: {nwHeadFmt.TITLE}") tokens.tokenizeText() 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), ] diff --git a/tests/test_core/test_core_tomd.py b/tests/test_core/test_core_tomd.py index b368ad68..4d973ead 100644 --- a/tests/test_core/test_core_tomd.py +++ b/tests/test_core/test_core_tomd.py @@ -213,14 +213,6 @@ def testCoreToMarkdown_ConvertDirect(mockGUI): toMD.doConvert() 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 # ==========