From d34239dfa4f9f917458c252ee0b5fdd95e61bc79 Mon Sep 17 00:00:00 2001 From: "Christopher T. Johnson" Date: Sun, 14 Apr 2024 17:47:44 -0400 Subject: [PATCH] Have addFragment except list of fragments --- lib/definition.py | 40 +++++++++++++++++++------------------- plugins/merriam-webster.py | 23 +++++++++++----------- 2 files changed, 31 insertions(+), 32 deletions(-) diff --git a/lib/definition.py b/lib/definition.py index 5817d7d..d448d10 100644 --- a/lib/definition.py +++ b/lib/definition.py @@ -374,29 +374,29 @@ class Line: return lineSpacing - def addFragment( - self, - frag: Fragment, - ) -> None: + def addFragment(self, frags: Fragment|list[Fragment],) -> None: SPEAKER = "\U0001F508" - if frag.audio().isValid(): - frag.setText(frag.text() + " " + SPEAKER) + if not isinstance(frags, list): + frags = [frags, ] + for frag in frags: + if frag.audio().isValid(): + frag.setText(frag.text() + " " + SPEAKER) - text = frag.text() - text = re.sub(r"\*", "\u2022", text) - text = re.sub(r"\{ldquo\}", "\u201c", text) - text = re.sub(r"\{rdquo\}", "\u201d", text) - frag.setText(text) - if frag.audio().isValid(): - frag.setPadding(3, 0, 0, 5) - frag.setBorder(1) - frag.setMargin(0, 0, 0, 0) - if Line.parseText: - items = Line.parseText(frag) - self._fragments += items - else: - self._fragments.append(frag) + text = frag.text() + text = re.sub(r"\*", "\u2022", text) + text = re.sub(r"\{ldquo\}", "\u201c", text) + text = re.sub(r"\{rdquo\}", "\u201d", text) + frag.setText(text) + if frag.audio().isValid(): + frag.setPadding(3, 0, 0, 5) + frag.setBorder(1) + frag.setMargin(0, 0, 0, 0) + if Line.parseText: + items = Line.parseText(frag) + self._fragments += items + else: + self._fragments.append(frag) return def finalizeLine(self, width: int, base: int) -> None: diff --git a/plugins/merriam-webster.py b/plugins/merriam-webster.py index bb38f6f..60fbf51 100644 --- a/plugins/merriam-webster.py +++ b/plugins/merriam-webster.py @@ -362,8 +362,7 @@ def do_sense(sense: Sense|None, indent:int=3) -> tuple[list[Fragment], list[Line line = Line() line.addFragment(frag) (newFrags, newLines) = do_dt(trycast(list[list[Pair]], sdsense['dt']), indent=indent) - for frag in newFrags: - line.addFragment(frag) + line.addFragment(newFrags) lines.append(line) lines += newLines elif k == 'sls': @@ -387,7 +386,6 @@ def do_pseq(outer: int, for entry in pseq: for pair in entry: if pair['objType'] == 'bs': - # TODO - bs has to be more than just a wrapper for Sense sense = pair['obj']['sense'] (newFrags, newLines) = do_sense(trycast(Sense, sense)) if first: @@ -395,8 +393,7 @@ def do_pseq(outer: int, first = False else: line = Line() - for frag in newFrags: - line.addFragment(frag) + line.addFragment(newFrags) lines.append(line) lines += newLines elif pair['objType'] == 'sense': @@ -413,8 +410,7 @@ def do_pseq(outer: int, frag.setIndent(3) line.addFragment(frag) (newFrags, newLines) = do_sense(trycast(Sense, pair['obj']), indent=4) - for frag in newFrags: - line.addFragment(frag) + line.addFragment(newFrags) lines.append(line) lines += newLines count += 1 @@ -439,8 +435,7 @@ def do_sseq(sseq:list[list[list[Pair]]]) -> list[Line]: if objType == 'sense': sense = trycast(Sense, pair['obj']) (frags, newlines) = do_sense(sense) - for frag in frags: - line.addFragment(frag) + line.addFragment(frags) lines.append(line) line = Line() lines += newlines @@ -448,13 +443,17 @@ def do_sseq(sseq:list[list[list[Pair]]]) -> list[Line]: raise NotImplementedError(f"sen unimplimented") elif objType == 'pseq': (frags, newlines) = do_pseq(inner, outer, pair['obj']) - for frag in frags: - line.addFragment(frag) + line.addFragment(frags) lines.append(line) line = Line() lines += newlines elif objType == 'bs': - raise NotImplementedError(f"bs unimplimented") + sense = pair['obj']['sense'] + (newFrags, newLines) = do_sense(trycast(Sense, sense)) + line.addFragment(newFrags) + lines.append(line) + line = Line() + lines += newLines else: raise NotImplementedError(f"Unknown object[{objType}] for \n{json.dumps(pair['obj'],indent=2)}") return lines