🛠️ Improve MarkdownParser
* Improved Markdown parsing and cleaning
This commit is contained in:
parent
aabf8ae737
commit
fb8c84495d
5 changed files with 29 additions and 13 deletions
|
|
@ -12,7 +12,7 @@ import ua.acclorite.book_story.domain.model.Chapter
|
||||||
import ua.acclorite.book_story.domain.model.ChapterWithText
|
import ua.acclorite.book_story.domain.model.ChapterWithText
|
||||||
import ua.acclorite.book_story.domain.util.Resource
|
import ua.acclorite.book_story.domain.util.Resource
|
||||||
import ua.acclorite.book_story.domain.util.UIText
|
import ua.acclorite.book_story.domain.util.UIText
|
||||||
import ua.acclorite.book_story.presentation.core.util.clearMarkdown
|
import ua.acclorite.book_story.presentation.core.util.clearAllMarkdown
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.xml.parsers.DocumentBuilderFactory
|
import javax.xml.parsers.DocumentBuilderFactory
|
||||||
|
|
@ -119,8 +119,11 @@ class Fb2TextParser @Inject constructor() : TextParser {
|
||||||
return Resource.Error(UIText.StringResource(R.string.error_file_empty))
|
return Resource.Error(UIText.StringResource(R.string.error_file_empty))
|
||||||
}
|
}
|
||||||
|
|
||||||
val title = formattedLines.first().clearMarkdown()
|
val title = formattedLines.first().clearAllMarkdown().let { title ->
|
||||||
formattedLines.removeAt(0)
|
formattedLines.removeAt(0)
|
||||||
|
if (title.isBlank()) return@let "Chapter 1"
|
||||||
|
return@let title
|
||||||
|
}
|
||||||
|
|
||||||
Log.i(FB2_TAG, "Successfully finished FB2 parsing.")
|
Log.i(FB2_TAG, "Successfully finished FB2 parsing.")
|
||||||
Resource.Success(
|
Resource.Success(
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import ua.acclorite.book_story.domain.model.Chapter
|
||||||
import ua.acclorite.book_story.domain.model.ChapterWithText
|
import ua.acclorite.book_story.domain.model.ChapterWithText
|
||||||
import ua.acclorite.book_story.domain.util.Resource
|
import ua.acclorite.book_story.domain.util.Resource
|
||||||
import ua.acclorite.book_story.domain.util.UIText
|
import ua.acclorite.book_story.domain.util.UIText
|
||||||
import ua.acclorite.book_story.presentation.core.util.clearMarkdown
|
import ua.acclorite.book_story.presentation.core.util.clearAllMarkdown
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
|
@ -35,8 +35,11 @@ class HtmlTextParser @Inject constructor(
|
||||||
return Resource.Error(UIText.StringResource(R.string.error_file_empty))
|
return Resource.Error(UIText.StringResource(R.string.error_file_empty))
|
||||||
}
|
}
|
||||||
|
|
||||||
val title = lines.first().clearMarkdown()
|
val title = lines.first().clearAllMarkdown().let { title ->
|
||||||
lines.removeAt(0)
|
lines.removeAt(0)
|
||||||
|
if (title.isBlank()) return@let "Chapter 1"
|
||||||
|
return@let title
|
||||||
|
}
|
||||||
|
|
||||||
Log.i(HTML_TAG, "Successfully finished HTML parsing.")
|
Log.i(HTML_TAG, "Successfully finished HTML parsing.")
|
||||||
Resource.Success(
|
Resource.Success(
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ import ua.acclorite.book_story.domain.model.Chapter
|
||||||
import ua.acclorite.book_story.domain.model.ChapterWithText
|
import ua.acclorite.book_story.domain.model.ChapterWithText
|
||||||
import ua.acclorite.book_story.domain.util.Resource
|
import ua.acclorite.book_story.domain.util.Resource
|
||||||
import ua.acclorite.book_story.domain.util.UIText
|
import ua.acclorite.book_story.domain.util.UIText
|
||||||
import ua.acclorite.book_story.presentation.core.util.clearMarkdown
|
import ua.acclorite.book_story.presentation.core.util.clearAllMarkdown
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
|
@ -121,8 +121,11 @@ class PdfTextParser @Inject constructor(
|
||||||
return Resource.Error(UIText.StringResource(R.string.error_file_empty))
|
return Resource.Error(UIText.StringResource(R.string.error_file_empty))
|
||||||
}
|
}
|
||||||
|
|
||||||
val title = strings.first().clearMarkdown()
|
val title = strings.first().clearAllMarkdown().let { title ->
|
||||||
strings.removeAt(0)
|
strings.removeAt(0)
|
||||||
|
if (title.isBlank()) return@let "Chapter 1"
|
||||||
|
return@let title
|
||||||
|
}
|
||||||
|
|
||||||
Log.i(PDF_TAG, "Successfully finished PDF parsing.")
|
Log.i(PDF_TAG, "Successfully finished PDF parsing.")
|
||||||
Resource.Success(
|
Resource.Success(
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import ua.acclorite.book_story.domain.model.Chapter
|
||||||
import ua.acclorite.book_story.domain.model.ChapterWithText
|
import ua.acclorite.book_story.domain.model.ChapterWithText
|
||||||
import ua.acclorite.book_story.domain.util.Resource
|
import ua.acclorite.book_story.domain.util.Resource
|
||||||
import ua.acclorite.book_story.domain.util.UIText
|
import ua.acclorite.book_story.domain.util.UIText
|
||||||
import ua.acclorite.book_story.presentation.core.util.clearMarkdown
|
import ua.acclorite.book_story.presentation.core.util.clearAllMarkdown
|
||||||
import java.io.BufferedReader
|
import java.io.BufferedReader
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileReader
|
import java.io.FileReader
|
||||||
|
|
@ -42,8 +42,11 @@ class TxtTextParser @Inject constructor() : TextParser {
|
||||||
return Resource.Error(UIText.StringResource(R.string.error_file_empty))
|
return Resource.Error(UIText.StringResource(R.string.error_file_empty))
|
||||||
}
|
}
|
||||||
|
|
||||||
val title = lines.first().clearMarkdown()
|
val title = lines.first().clearAllMarkdown().let { title ->
|
||||||
lines.removeAt(0)
|
lines.removeAt(0)
|
||||||
|
if (title.isBlank()) return@let "Chapter 1"
|
||||||
|
return@let title
|
||||||
|
}
|
||||||
|
|
||||||
Log.i(TXT_TAG, "Successfully finished TXT parsing.")
|
Log.i(TXT_TAG, "Successfully finished TXT parsing.")
|
||||||
Resource.Success(
|
Resource.Success(
|
||||||
|
|
|
||||||
|
|
@ -24,5 +24,9 @@ fun Float.coerceAndPreventNaN(): Float {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun String.clearMarkdown(): String {
|
fun String.clearMarkdown(): String {
|
||||||
return replace(Regex("_|\\*\\*"), "")
|
return replace(Regex("(_+)|(\\*+)"), "")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun String.clearAllMarkdown(): String {
|
||||||
|
return replace(Regex("(_+)|(\\*+)|(#+)"), "").trim()
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue