From 85712cf566d2f6a594e022bce6686276a580f675 Mon Sep 17 00:00:00 2001 From: Acclorite <140836141+Acclorite@users.noreply.github.com> Date: Mon, 16 Dec 2024 15:02:53 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8F=20Fix=20empty=20lines=20p?= =?UTF-8?q?ass=20.isNotBlank()=20&=20head=20>=20title=20is=20not=20filtere?= =?UTF-8?q?d=20out?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fixed issue, where some kind of invisible symbol passes .isNotBlank() check, resulting in empty lines * Fixed issue with "head > title" is present and is not filtered out Resolves: #122 --- .../book_story/data/parser/DocumentParser.kt | 6 +++- .../core/util/PrimitiveExtensions.kt | 29 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/ua/acclorite/book_story/data/parser/DocumentParser.kt b/app/src/main/java/ua/acclorite/book_story/data/parser/DocumentParser.kt index 7bed9ec9..3c76fcd4 100644 --- a/app/src/main/java/ua/acclorite/book_story/data/parser/DocumentParser.kt +++ b/app/src/main/java/ua/acclorite/book_story/data/parser/DocumentParser.kt @@ -3,6 +3,7 @@ package ua.acclorite.book_story.data.parser import kotlinx.coroutines.yield import org.jsoup.nodes.Document import ua.acclorite.book_story.presentation.core.util.clearMarkdown +import ua.acclorite.book_story.presentation.core.util.containsVisibleText import javax.inject.Inject class DocumentParser @Inject constructor() { @@ -26,6 +27,9 @@ class DocumentParser @Inject constructor() { element.append("\n") } + // Remove 's title + select("title").remove() + // Markdown select("hr").append("\n---\n") select("b").append("**").prepend("**") @@ -52,7 +56,7 @@ class DocumentParser @Inject constructor() { Regex("""_\s*(.*?)\s*_"""), "_$1_" ).trim() - if (formattedLine.clearMarkdown().isNotBlank()) { + if (formattedLine.clearMarkdown().containsVisibleText()) { lines.add(formattedLine) } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/util/PrimitiveExtensions.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/util/PrimitiveExtensions.kt index be2ce46d..294afe92 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/util/PrimitiveExtensions.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/util/PrimitiveExtensions.kt @@ -29,4 +29,33 @@ fun String.clearMarkdown(): String { fun String.clearAllMarkdown(): String { return replace(Regex("(_+)|(\\*+)|(#+)"), "").trim() +} + +fun String.containsVisibleText(): Boolean { + return any { it.isVisibleCharacter() } +} + +fun Char.isVisibleCharacter(): Boolean { + return when (this.category) { + CharCategory.UPPERCASE_LETTER, + CharCategory.LOWERCASE_LETTER, + CharCategory.TITLECASE_LETTER, + CharCategory.MODIFIER_LETTER, + CharCategory.OTHER_LETTER, + CharCategory.DECIMAL_DIGIT_NUMBER, + CharCategory.LETTER_NUMBER, + CharCategory.OTHER_NUMBER, + CharCategory.MATH_SYMBOL, + CharCategory.CURRENCY_SYMBOL, + CharCategory.OTHER_SYMBOL, + CharCategory.INITIAL_QUOTE_PUNCTUATION, + CharCategory.FINAL_QUOTE_PUNCTUATION, + CharCategory.CONNECTOR_PUNCTUATION, + CharCategory.DASH_PUNCTUATION, + CharCategory.START_PUNCTUATION, + CharCategory.END_PUNCTUATION, + CharCategory.OTHER_PUNCTUATION -> true + + else -> false + } } \ No newline at end of file