Block adding spaces before colon (French language feature) in certain meta data cases

This commit is contained in:
Veronica Berglyd Olsen
2022-08-17 23:01:03 +02:00
parent 90b50fe180
commit fcfe7507d6
2 changed files with 48 additions and 5 deletions
+20 -4
View File
@@ -1982,12 +1982,14 @@ class GuiDocEditor(QTextEdit):
tCheck = tInsert tCheck = tInsert
if tCheck in self.mainConf.fmtPadBefore: if tCheck in self.mainConf.fmtPadBefore:
nDelete = max(nDelete, 1) if self.allowSpaceBeforeColon(theText, tCheck):
tInsert = self._typPadChar + tInsert nDelete = max(nDelete, 1)
tInsert = self._typPadChar + tInsert
if tCheck in self.mainConf.fmtPadAfter: if tCheck in self.mainConf.fmtPadAfter:
nDelete = max(nDelete, 1) if self.allowSpaceBeforeColon(theText, tCheck):
tInsert = tInsert + self._typPadChar nDelete = max(nDelete, 1)
tInsert = tInsert + self._typPadChar
if nDelete > 0: if nDelete > 0:
theCursor.movePosition(QTextCursor.Left, QTextCursor.KeepAnchor, nDelete) theCursor.movePosition(QTextCursor.Left, QTextCursor.KeepAnchor, nDelete)
@@ -1995,6 +1997,20 @@ class GuiDocEditor(QTextEdit):
return return
@staticmethod
def _allowSpaceBeforeColon(text, char):
"""Special checker function only used by the insert space
feature for French, Spanish, etc, so it doesn't insert a
sapce before colons in meta data lines.
"""
if char == ":" and len(text) > 1:
if text[0] == "@":
return False
if text[0] == "%":
if text[1:].lstrip()[:9].lower() == "synopsis:":
return False
return True
def _updateHeaders(self, checkPos=False, checkLevel=False): def _updateHeaders(self, checkPos=False, checkLevel=False):
"""Update the headers record and return True if anything """Update the headers record and return True if anything
changed, if a check flag was provided. changed, if a check flag was provided.
+28 -1
View File
@@ -1189,7 +1189,7 @@ def testGuiEditor_Tags(qtbot, monkeypatch, nwGUI, nwMinimal, ipsumText):
@pytest.mark.gui @pytest.mark.gui
def testGuiEditor_WordCounters(qtbot, monkeypatch, caplog, nwGUI, nwMinimal, ipsumText): def testGuiEditor_WordCounters(qtbot, monkeypatch, nwGUI, nwMinimal, ipsumText):
"""Test saving text from the editor. """Test saving text from the editor.
""" """
# Block message box # Block message box
@@ -1488,3 +1488,30 @@ def testGuiEditor_Search(qtbot, monkeypatch, nwGUI, nwLipsum):
# qtbot.stopForInteraction() # qtbot.stopForInteraction()
# END Test testGuiEditor_Search # END Test testGuiEditor_Search
@pytest.mark.gui
def testGuiEditor_StaticMethods():
"""Test the document editor's static methods.
"""
# Check the method that decides if it is allowed to insert a space
# before a colon using the French, Spanish, etc language feature
assert GuiDocEditor._allowSpaceBeforeColon("", "") is True
assert GuiDocEditor._allowSpaceBeforeColon("", ":") is True
assert GuiDocEditor._allowSpaceBeforeColon("some text", ":") is True
assert GuiDocEditor._allowSpaceBeforeColon("@:", ":") is False
assert GuiDocEditor._allowSpaceBeforeColon("@>", ">") is True
assert GuiDocEditor._allowSpaceBeforeColon("%", ":") is True
assert GuiDocEditor._allowSpaceBeforeColon("%:", ":") is True
assert GuiDocEditor._allowSpaceBeforeColon("%synopsis:", ":") is False
assert GuiDocEditor._allowSpaceBeforeColon("%Synopsis:", ":") is False
assert GuiDocEditor._allowSpaceBeforeColon("% synopsis:", ":") is False
assert GuiDocEditor._allowSpaceBeforeColon("% Synopsis:", ":") is False
assert GuiDocEditor._allowSpaceBeforeColon("% synopsis:", ":") is False
assert GuiDocEditor._allowSpaceBeforeColon("% Synopsis:", ":") is False
assert GuiDocEditor._allowSpaceBeforeColon("%synopsis :", ":") is True
assert GuiDocEditor._allowSpaceBeforeColon("%Synopsis :", ":") is True
# END Test testGuiEditor_MinorMethods