Fix sentences in tail of parent element not being added

This commit is contained in:
Kovid Goyal 2024-10-20 13:21:56 +05:30
parent 50bdf1c8a8
commit a7736ab44d
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 5 additions and 3 deletions

View File

@ -254,7 +254,9 @@ class Structure(BaseTest):
}.items()): }.items()):
root = parse(text, namespace_elements=True) root = parse(text, namespace_elements=True)
orig = normalize_markup(root) orig = normalize_markup(root)
mark_sentences_in_html(root) sentences = mark_sentences_in_html(root)
ids = tuple(int(s.elem_id[len(id_prefix):]) for s in sentences)
self.assertEqual(len(ids), ids[-1])
marked = normalize_markup(root) marked = normalize_markup(root)
self.assertEqual(expected, marked) self.assertEqual(expected, marked)
unmark_sentences_in_html(root) unmark_sentences_in_html(root)
@ -263,8 +265,6 @@ class Structure(BaseTest):
self.assertEqual(tuple(s.lang for s in sentences), ('eng', 'fra')) self.assertEqual(tuple(s.lang for s in sentences), ('eng', 'fra'))
def find_tests(): def find_tests():
import unittest import unittest
return unittest.defaultTestLoader.loadTestsFromTestCase(Structure) return unittest.defaultTestLoader.loadTestsFromTestCase(Structure)

View File

@ -84,6 +84,7 @@ def mark_sentences_in_html(root, lang: str = '', voice: str = '') -> list[Senten
self.tag_name = tag_name self.tag_name = tag_name
self.lang = child_lang or lang_for_elem(elem, parent_lang) self.lang = child_lang or lang_for_elem(elem, parent_lang)
self.parent_lang = parent_lang self.parent_lang = parent_lang
self.parent_voice = parent_voice
q = elem.get('data-calibre-tts', '') q = elem.get('data-calibre-tts', '')
self.voice = parent_voice self.voice = parent_voice
if q.startswith('{'): # } if q.startswith('{'): # }
@ -127,6 +128,7 @@ def mark_sentences_in_html(root, lang: str = '', voice: str = '') -> list[Senten
before = self.elem.tail[:start] before = self.elem.tail[:start]
span = self.make_wrapper(text, p) span = self.make_wrapper(text, p)
spans.append(span) spans.append(span)
ans.append(Sentence(span.get('id'), text, self.parent_lang, self.parent_voice))
after = self.elem.tail[end:] after = self.elem.tail[end:]
self.elem.tail = before self.elem.tail = before
if after and spans: if after and spans: