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