🛠️ Fix empty lines pass .isNotBlank() & head > title is not filtered out
* 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
This commit is contained in:
parent
9bac48c5cb
commit
85712cf566
2 changed files with 34 additions and 1 deletions
|
|
@ -3,6 +3,7 @@ package ua.acclorite.book_story.data.parser
|
||||||
import kotlinx.coroutines.yield
|
import kotlinx.coroutines.yield
|
||||||
import org.jsoup.nodes.Document
|
import org.jsoup.nodes.Document
|
||||||
import ua.acclorite.book_story.presentation.core.util.clearMarkdown
|
import ua.acclorite.book_story.presentation.core.util.clearMarkdown
|
||||||
|
import ua.acclorite.book_story.presentation.core.util.containsVisibleText
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class DocumentParser @Inject constructor() {
|
class DocumentParser @Inject constructor() {
|
||||||
|
|
@ -26,6 +27,9 @@ class DocumentParser @Inject constructor() {
|
||||||
element.append("\n")
|
element.append("\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove <head>'s title
|
||||||
|
select("title").remove()
|
||||||
|
|
||||||
// Markdown
|
// Markdown
|
||||||
select("hr").append("\n---\n")
|
select("hr").append("\n---\n")
|
||||||
select("b").append("**").prepend("**")
|
select("b").append("**").prepend("**")
|
||||||
|
|
@ -52,7 +56,7 @@ class DocumentParser @Inject constructor() {
|
||||||
Regex("""_\s*(.*?)\s*_"""), "_$1_"
|
Regex("""_\s*(.*?)\s*_"""), "_$1_"
|
||||||
).trim()
|
).trim()
|
||||||
|
|
||||||
if (formattedLine.clearMarkdown().isNotBlank()) {
|
if (formattedLine.clearMarkdown().containsVisibleText()) {
|
||||||
lines.add(formattedLine)
|
lines.add(formattedLine)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,3 +30,32 @@ fun String.clearMarkdown(): String {
|
||||||
fun String.clearAllMarkdown(): String {
|
fun String.clearAllMarkdown(): String {
|
||||||
return replace(Regex("(_+)|(\\*+)|(#+)"), "").trim()
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue