From c02e7a52a1b609d1ffde4dd6259f98684a047e50 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sat, 21 Oct 2023 15:40:33 +0200 Subject: [PATCH] Fix keyword section in writing classes --- novelwriter/core/tohtml.py | 27 ++++++++++----------------- novelwriter/core/tomd.py | 4 ++-- novelwriter/core/toodt.py | 15 ++++++++++----- 3 files changed, 22 insertions(+), 24 deletions(-) diff --git a/novelwriter/core/tohtml.py b/novelwriter/core/tohtml.py index 6ebaeedf..412dcedf 100644 --- a/novelwriter/core/tohtml.py +++ b/novelwriter/core/tohtml.py @@ -31,7 +31,7 @@ from pathlib import Path from novelwriter import CONFIG from novelwriter.common import formatTimeStamp -from novelwriter.constants import nwHeadFmt, nwKeyWords, nwLabels, nwHtmlUnicode +from novelwriter.constants import nwHeadFmt, nwKeyWords, nwLabels, nwHtmlUnicode, trConst from novelwriter.core.project import NWProject from novelwriter.core.tokenizer import Tokenizer, stripEscape @@ -474,25 +474,18 @@ class ToHtml(Tokenizer): def _formatKeywords(self, text: str) -> str: """Apply HTML formatting to keywords.""" valid, bits, _ = self._project.index.scanThis("@"+text) - if not valid or not bits: + if not valid or not bits or bits[0] not in nwLabels.KEY_NAME: return "" - result = "" - tags = [] - if bits[0] in nwLabels.KEY_NAME: - result += f"{nwLabels.KEY_NAME[bits[0]]}: " - if len(bits) > 1: - if bits[0] == nwKeyWords.TAG_KEY: - result += f"{bits[1]}" + result = f"{trConst(nwLabels.KEY_NAME[bits[0]])}: " + if len(bits) > 1: + if bits[0] == nwKeyWords.TAG_KEY: + result += f"{bits[1]}" + else: + if self._genMode == self.M_PREVIEW: + result += ", ".join(f"{t}" for t in bits[1:]) else: - if self._genMode == self.M_PREVIEW: - for tTag in bits[1:]: - tags.append(f"{tTag}") - result += ", ".join(tags) - else: - for tTag in bits[1:]: - tags.append(f"{tTag}") - result += ", ".join(tags) + result += ", ".join(f"{t}" for t in bits[1:]) return result diff --git a/novelwriter/core/tomd.py b/novelwriter/core/tomd.py index 67843ace..cc2e8696 100644 --- a/novelwriter/core/tomd.py +++ b/novelwriter/core/tomd.py @@ -27,7 +27,7 @@ import logging from pathlib import Path -from novelwriter.constants import nwHeadFmt, nwLabels +from novelwriter.constants import nwHeadFmt, nwLabels, trConst from novelwriter.core.project import NWProject from novelwriter.core.tokenizer import Tokenizer @@ -209,7 +209,7 @@ class ToMarkdown(Tokenizer): result = "" if bits[0] in nwLabels.KEY_NAME: - result += f"**{nwLabels.KEY_NAME[bits[0]]}:** " + result += f"**{trConst(nwLabels.KEY_NAME[bits[0]])}:** " if len(bits) > 1: result += ", ".join(bits[1:]) diff --git a/novelwriter/core/toodt.py b/novelwriter/core/toodt.py index 88b8ed84..c1165e30 100644 --- a/novelwriter/core/toodt.py +++ b/novelwriter/core/toodt.py @@ -37,7 +37,7 @@ from datetime import datetime from novelwriter import __version__ from novelwriter.common import xmlIndent -from novelwriter.constants import nwHeadFmt, nwLabels, trConst +from novelwriter.constants import nwHeadFmt, nwKeyWords, nwLabels, trConst from novelwriter.core.project import NWProject from novelwriter.core.tokenizer import Tokenizer, stripEscape @@ -571,10 +571,15 @@ class ToOdt(Tokenizer): valid, bits, _ = self._project.index.scanThis("@"+text) if not valid or not bits or bits[0] not in nwLabels.KEY_NAME: return "", [] - name = trConst(nwLabels.KEY_NAME[bits[0]]) - tags = ", ".join(bits[1:]) - rTxt = f"{name}: {tags}" - rFmt = [(0, self.FMT_B_B), (len(name) + 1, self.FMT_B_E)] + + rTxt = f"{trConst(nwLabels.KEY_NAME[bits[0]])}: " + rFmt = [(0, self.FMT_B_B), (len(rTxt) - 1, self.FMT_B_E)] + if len(bits) > 1: + if bits[0] == nwKeyWords.TAG_KEY: + rTxt += bits[1] + else: + rTxt += ", ".join(bits[1:]) + return rTxt, rFmt def _addTextPar(