Have addFragment except list of fragments

This commit is contained in:
Christopher T. Johnson
2024-04-14 17:47:44 -04:00
parent b82f775621
commit d34239dfa4
2 changed files with 31 additions and 32 deletions

View File

@@ -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:

View File

@@ -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