diff --git a/app/src/main/java/ua/acclorite/book_story/data/parser/fb2/Fb2TextParser.kt b/app/src/main/java/ua/acclorite/book_story/data/parser/fb2/Fb2TextParser.kt index 0ce16f31..cb3d409d 100644 --- a/app/src/main/java/ua/acclorite/book_story/data/parser/fb2/Fb2TextParser.kt +++ b/app/src/main/java/ua/acclorite/book_story/data/parser/fb2/Fb2TextParser.kt @@ -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.util.Resource 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 javax.inject.Inject import javax.xml.parsers.DocumentBuilderFactory @@ -119,8 +119,11 @@ class Fb2TextParser @Inject constructor() : TextParser { return Resource.Error(UIText.StringResource(R.string.error_file_empty)) } - val title = formattedLines.first().clearMarkdown() - formattedLines.removeAt(0) + val title = formattedLines.first().clearAllMarkdown().let { title -> + formattedLines.removeAt(0) + if (title.isBlank()) return@let "Chapter 1" + return@let title + } Log.i(FB2_TAG, "Successfully finished FB2 parsing.") Resource.Success( diff --git a/app/src/main/java/ua/acclorite/book_story/data/parser/html/HtmlTextParser.kt b/app/src/main/java/ua/acclorite/book_story/data/parser/html/HtmlTextParser.kt index 3de45970..9d22641b 100644 --- a/app/src/main/java/ua/acclorite/book_story/data/parser/html/HtmlTextParser.kt +++ b/app/src/main/java/ua/acclorite/book_story/data/parser/html/HtmlTextParser.kt @@ -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.util.Resource 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 javax.inject.Inject @@ -35,8 +35,11 @@ class HtmlTextParser @Inject constructor( return Resource.Error(UIText.StringResource(R.string.error_file_empty)) } - val title = lines.first().clearMarkdown() - lines.removeAt(0) + val title = lines.first().clearAllMarkdown().let { title -> + lines.removeAt(0) + if (title.isBlank()) return@let "Chapter 1" + return@let title + } Log.i(HTML_TAG, "Successfully finished HTML parsing.") Resource.Success( diff --git a/app/src/main/java/ua/acclorite/book_story/data/parser/pdf/PdfTextParser.kt b/app/src/main/java/ua/acclorite/book_story/data/parser/pdf/PdfTextParser.kt index 15be7b3c..6e4abcec 100644 --- a/app/src/main/java/ua/acclorite/book_story/data/parser/pdf/PdfTextParser.kt +++ b/app/src/main/java/ua/acclorite/book_story/data/parser/pdf/PdfTextParser.kt @@ -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.util.Resource 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 javax.inject.Inject @@ -121,8 +121,11 @@ class PdfTextParser @Inject constructor( return Resource.Error(UIText.StringResource(R.string.error_file_empty)) } - val title = strings.first().clearMarkdown() - strings.removeAt(0) + val title = strings.first().clearAllMarkdown().let { title -> + strings.removeAt(0) + if (title.isBlank()) return@let "Chapter 1" + return@let title + } Log.i(PDF_TAG, "Successfully finished PDF parsing.") Resource.Success( diff --git a/app/src/main/java/ua/acclorite/book_story/data/parser/txt/TxtTextParser.kt b/app/src/main/java/ua/acclorite/book_story/data/parser/txt/TxtTextParser.kt index e4a5569e..acb11db4 100644 --- a/app/src/main/java/ua/acclorite/book_story/data/parser/txt/TxtTextParser.kt +++ b/app/src/main/java/ua/acclorite/book_story/data/parser/txt/TxtTextParser.kt @@ -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.util.Resource 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.File import java.io.FileReader @@ -42,8 +42,11 @@ class TxtTextParser @Inject constructor() : TextParser { return Resource.Error(UIText.StringResource(R.string.error_file_empty)) } - val title = lines.first().clearMarkdown() - lines.removeAt(0) + val title = lines.first().clearAllMarkdown().let { title -> + lines.removeAt(0) + if (title.isBlank()) return@let "Chapter 1" + return@let title + } Log.i(TXT_TAG, "Successfully finished TXT parsing.") Resource.Success( 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 241f3190..be2ce46d 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 @@ -24,5 +24,9 @@ fun Float.coerceAndPreventNaN(): Float { } fun String.clearMarkdown(): String { - return replace(Regex("_|\\*\\*"), "") + return replace(Regex("(_+)|(\\*+)"), "") +} + +fun String.clearAllMarkdown(): String { + return replace(Regex("(_+)|(\\*+)|(#+)"), "").trim() } \ No newline at end of file