From 8e3f5410b7d45ceb50142c2e750da27341915be4 Mon Sep 17 00:00:00 2001 From: Dpeta <69427753+Dpeta@users.noreply.github.com> Date: Thu, 23 Feb 2023 01:25:13 +0100 Subject: [PATCH 1/3] Chain iterators and extend when excluding links from quirks --- dataobjs.py | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/dataobjs.py b/dataobjs.py index 721ee5e..bfd65b4 100644 --- a/dataobjs.py +++ b/dataobjs.py @@ -1,4 +1,8 @@ +import re +import random +import itertools import logging +from datetime import datetime PchumLog = logging.getLogger("pchumLogger") try: @@ -6,9 +10,6 @@ try: except ImportError: print("PyQt5 fallback (dataobjs.py)") from PyQt5 import QtGui -from datetime import datetime -import re -import random from mood import Mood from parsetools import ( @@ -167,20 +168,17 @@ class pesterQuirks: if checkstate == 2: # Check for substring that should be excluded. excludes = [] - # Check for links, store in list. - for match in re.finditer(_urlre, string): - excludes.append(match) - # Check for smilies, store in list. - for match in re.finditer(_smilere, string): - excludes.append(match) - # Check for @handles, store in list. - for match in re.finditer(_handlere, string): - excludes.append(match) - # Check for #memos, store in list. - for match in re.finditer(_memore, string): - excludes.append(match) + # Return matches for links, smilies, handles, memos. + # Chain the iterators and add to excludes list. + matches = itertools.chain( + re.finditer(_urlre, string), + re.finditer(_smilere, string), + re.finditer(_handlere, string), + re.finditer(_memore, string), + ) + excludes.extend(matches) - if len(excludes) >= 1: + if excludes: # SORT !!! excludes.sort(key=lambda exclude: exclude.start()) # Recursion check. From 595252a3d3aec5067f072f8cfc5da749fe039669 Mon Sep 17 00:00:00 2001 From: Dpeta <69427753+Dpeta@users.noreply.github.com> Date: Thu, 23 Feb 2023 02:12:16 +0100 Subject: [PATCH 2/3] Add alternian text --- dataobjs.py | 2 ++ fonts/alternian/AllisDaedric-VYWz.otf | Bin 0 -> 15660 bytes fonts/alternian/info.txt | 2 ++ parsetools.py | 12 ++++++++++++ pesterchum.py | 7 ++++--- pyinst.py | 2 ++ quirks/gradient.py | 2 ++ 7 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 fonts/alternian/AllisDaedric-VYWz.otf create mode 100644 fonts/alternian/info.txt diff --git a/dataobjs.py b/dataobjs.py index bfd65b4..f2dc448 100644 --- a/dataobjs.py +++ b/dataobjs.py @@ -32,6 +32,7 @@ _ctagre = re.compile("()", re.I) _smilere = re.compile("|".join(list(smiledict.keys()))) _memore = re.compile(r"(\s|^)(#[A-Za-z0-9_]+)") _handlere = re.compile(r"(\s|^)(@[A-Za-z0-9_]+)") +_alternian = re.compile(r".*?") class pesterQuirk: @@ -175,6 +176,7 @@ class pesterQuirks: re.finditer(_smilere, string), re.finditer(_handlere, string), re.finditer(_memore, string), + re.finditer(_alternian, string), ) excludes.extend(matches) diff --git a/fonts/alternian/AllisDaedric-VYWz.otf b/fonts/alternian/AllisDaedric-VYWz.otf new file mode 100644 index 0000000000000000000000000000000000000000..1183577d9f344c616d3407428ba2ec4d5b0f9c07 GIT binary patch literal 15660 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") _honk = re.compile(r"(?i)\bhonk\b") _groupre = re.compile(r"\\([0-9]+)") +_alternian = re.compile(r".*?") # Matches get set to alternian font quirkloader = ScriptQuirks() _functionre = None @@ -184,6 +185,16 @@ class hyperlink_lazy(hyperlink): self.string = "http://" + string +class alternianTag(lexercon.Chunk): + def __init__(self, string): + self.string = string + + def convert(self, format): + if format == "html": + return f"{self.string}" + return self.string + + class imagelink(lexercon.Chunk): def __init__(self, string, img): self.string = string @@ -285,6 +296,7 @@ def kxlexMsg(msg: str): def lexMessage(string: str): lexlist = [ (mecmd, _mecmdre), + (alternianTag, _alternian), (colorBegin, _ctag_begin), # (colorBegin, _gtag_begin), (colorEnd, _ctag_end), diff --git a/pesterchum.py b/pesterchum.py index b590dc5..b750365 100755 --- a/pesterchum.py +++ b/pesterchum.py @@ -1653,9 +1653,10 @@ class PesterWindow(MovingWindow): if not self.config.defaultprofile(): self.changeProfile() - # Fuck you some more OSX leopard! >:( - # if not ostools.isOSXLeopard(): - # QtCore.QTimer.singleShot(1000, self.mspacheck) + # Load font + QtGui.QFontDatabase.addApplicationFont( + os.path.join("fonts", "alternian", "AllisDaedric-VYWz.otf") + ) self.pcUpdate[str, str].connect(self.updateMsg) diff --git a/pyinst.py b/pyinst.py index eb47b2f..00d6c3e 100644 --- a/pyinst.py +++ b/pyinst.py @@ -17,6 +17,7 @@ add_data = [ "smilies;smilies", "themes;themes", "docs;docs", + "fonts;fonts", "README.md;.", "LICENSE;.", "CHANGELOG.md;.", @@ -28,6 +29,7 @@ data_folders = { "smilies": "smilies", "themes": "themes", "docs": "docs", + "fonts": "fonts", } data_files = { "README.md": "README.md.txt", diff --git a/quirks/gradient.py b/quirks/gradient.py index a814af4..a72fb79 100644 --- a/quirks/gradient.py +++ b/quirks/gradient.py @@ -56,6 +56,7 @@ def rainbow(text): re.finditer(_smilere, text), re.finditer(_memore, text), re.finditer(_handlere, text), + re.finditer(_alternian_tags, text), ) for match in match_chain: for color_and_position in colors_and_positions: @@ -161,3 +162,4 @@ _smilere = re.compile("|".join(list(smiledict.keys()))) _urlre = re.compile(r"(?i)(?:^|(?<=\s))(?:(?:https?|ftp)://|magnet:)[^\s]+") _memore = re.compile(r"(\s|^)(#[A-Za-z0-9_]+)") _handlere = re.compile(r"(\s|^)(@[A-Za-z0-9_]+)") +_alternian_tags = re.compile(r"|") From 0cd1b1ace7f3ee2b484677cf1c589a4b8e23f283 Mon Sep 17 00:00:00 2001 From: Dpeta <69427753+Dpeta@users.noreply.github.com> Date: Thu, 23 Feb 2023 20:50:49 +0100 Subject: [PATCH 3/3] Use instead of for alternian text. --- parsetools.py | 28 ++++++++++++++++++++++------ quirks/gradient.py | 6 ++++-- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/parsetools.py b/parsetools.py index 6ab2867..0eefe4f 100644 --- a/parsetools.py +++ b/parsetools.py @@ -40,7 +40,8 @@ _oocre = re.compile(r"([\[(\{])\1.*([\])\}])\2") # _format_end = re.compile(r"(?i)") _honk = re.compile(r"(?i)\bhonk\b") _groupre = re.compile(r"\\([0-9]+)") -_alternian = re.compile(r".*?") # Matches get set to alternian font +_alternian_begin = re.compile(r"") # Matches get set to alternian font +_alternian_end = re.compile(r"") quirkloader = ScriptQuirks() _functionre = None @@ -170,9 +171,9 @@ class hyperlink(lexercon.Chunk): def convert(self, format): if format == "html": - return "{}".format(self.string, self.string) + return f"{self.string}" elif format == "bbcode": - return "[url]%s[/url]" % (self.string) + return f"[url]{self.string}[/url]" else: return self.string @@ -185,13 +186,27 @@ class hyperlink_lazy(hyperlink): self.string = "http://" + string -class alternianTag(lexercon.Chunk): +class alternianTagBegin(lexercon.Chunk): def __init__(self, string): self.string = string def convert(self, format): if format == "html": - return f"{self.string}" + return "" + elif format == "text": + return "" + return self.string + + +class alternianTagEnd(lexercon.Chunk): + def __init__(self, string): + self.string = string + + def convert(self, format): + if format == "html": + return "" + elif format == "text": + return "" return self.string @@ -296,7 +311,8 @@ def kxlexMsg(msg: str): def lexMessage(string: str): lexlist = [ (mecmd, _mecmdre), - (alternianTag, _alternian), + (alternianTagBegin, _alternian_begin), + (alternianTagEnd, _alternian_end), (colorBegin, _ctag_begin), # (colorBegin, _gtag_begin), (colorEnd, _ctag_end), diff --git a/quirks/gradient.py b/quirks/gradient.py index a72fb79..c02b7fe 100644 --- a/quirks/gradient.py +++ b/quirks/gradient.py @@ -56,7 +56,8 @@ def rainbow(text): re.finditer(_smilere, text), re.finditer(_memore, text), re.finditer(_handlere, text), - re.finditer(_alternian_tags, text), + re.finditer(_alternian_begin, text), + re.finditer(_alternian_end, text), ) for match in match_chain: for color_and_position in colors_and_positions: @@ -162,4 +163,5 @@ _smilere = re.compile("|".join(list(smiledict.keys()))) _urlre = re.compile(r"(?i)(?:^|(?<=\s))(?:(?:https?|ftp)://|magnet:)[^\s]+") _memore = re.compile(r"(\s|^)(#[A-Za-z0-9_]+)") _handlere = re.compile(r"(\s|^)(@[A-Za-z0-9_]+)") -_alternian_tags = re.compile(r"|") +_alternian_begin = re.compile(r"") # Matches get set to alternian font +_alternian_end = re.compile(r"")