From e687746093f8a1e487c86a96d2fcc2cb61e8b072 Mon Sep 17 00:00:00 2001 From: Kendall Park Date: Mon, 29 Aug 2022 17:58:19 -0500 Subject: [PATCH] fix: replace cloze with blank within tag resolves ankidroid/Anki-Android#12233 --- AnkiDroid/src/main/java/com/ichi2/anki/TtsParser.kt | 8 ++++---- .../test/java/com/ichi2/libanki/TtsParserTest.kt | 13 +++++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/TtsParser.kt b/AnkiDroid/src/main/java/com/ichi2/anki/TtsParser.kt index 64916a5194..36b00c8d1b 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/TtsParser.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/TtsParser.kt @@ -26,7 +26,7 @@ object TtsParser { fun getTextsToRead(html: String, clozeReplacement: String?): List { val textsToRead: MutableList = ArrayList() val elem = Jsoup.parseBodyFragment(html).body() - parseTtsElements(elem, textsToRead) + parseTtsElements(elem, textsToRead, clozeReplacement) if (textsToRead.isEmpty()) { // No elements found: return the text of the whole HTML fragment textsToRead.add(readWholeCard(elem.text().replace(TemplateFilters.CLOZE_DELETION_REPLACEMENT, clozeReplacement!!))) @@ -34,15 +34,15 @@ object TtsParser { return textsToRead } - private fun parseTtsElements(element: Element, textsToRead: MutableList) { + private fun parseTtsElements(element: Element, textsToRead: MutableList, clozeReplacement: String?) { if ("tts".equals(element.tagName(), ignoreCase = true) && "android".equals(element.attr("service"), ignoreCase = true) ) { - textsToRead.add(localisedText(element.text(), element.attr("voice"))) + textsToRead.add(localisedText(element.text().replace(TemplateFilters.CLOZE_DELETION_REPLACEMENT, clozeReplacement!!), element.attr("voice"))) return // ignore any children } for (child in element.children()) { - parseTtsElements(child, textsToRead) + parseTtsElements(child, textsToRead, clozeReplacement) } } diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/TtsParserTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/TtsParserTest.kt index 89ab719e43..93bb77b6df 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/TtsParserTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/TtsParserTest.kt @@ -36,6 +36,19 @@ class TtsParserTest { assertThat(actual.fieldText, equalTo("This is a blank")) } + @Test + fun clozeIsReplacedWithBlankInTTSTag() { + val content = """This is a [...]""" + val actual = getTtsTagFrom(content) + assertThat(actual.fieldText, equalTo("This is a blank")) + } + @Test fun providedExampleClozeReplaces() { val content = """