|
|
|
@ -20,8 +20,7 @@ class TextFile(private val book: Book) { |
|
|
|
|
|
|
|
|
|
@Throws(FileNotFoundException::class) |
|
|
|
|
fun getChapterList(): ArrayList<BookChapter> { |
|
|
|
|
var rulePattern: Pattern? = null |
|
|
|
|
if (book.charset == null || book.tocUrl.isEmpty()) { |
|
|
|
|
val rulePattern: Pattern? = if (book.charset == null || book.tocUrl.isEmpty()) { |
|
|
|
|
LocalBook.getBookInputStream(book).use { bis -> |
|
|
|
|
val buffer = ByteArray(BUFFER_SIZE) |
|
|
|
|
var blockContent: String |
|
|
|
@ -29,19 +28,19 @@ class TextFile(private val book: Book) { |
|
|
|
|
book.charset = EncodingDetect.getEncode(buffer) |
|
|
|
|
charset = book.fileCharset() |
|
|
|
|
blockContent = String(buffer, 0, length, charset) |
|
|
|
|
rulePattern = if (book.tocUrl.isNotEmpty()) { |
|
|
|
|
Pattern.compile(book.tocUrl, Pattern.MULTILINE) |
|
|
|
|
if (book.tocUrl.isNotEmpty()) { |
|
|
|
|
book.tocUrl.toPattern(Pattern.MULTILINE) |
|
|
|
|
} else { |
|
|
|
|
if (blockContent.isEmpty()) { |
|
|
|
|
length = bis.read(buffer) |
|
|
|
|
book.charset = EncodingDetect.getEncode(buffer) |
|
|
|
|
blockContent = String(buffer, 0, length, charset) |
|
|
|
|
} |
|
|
|
|
getTocRule(blockContent)?.let { |
|
|
|
|
Pattern.compile(it.rule, Pattern.MULTILINE) |
|
|
|
|
} |
|
|
|
|
getTocRule(blockContent)?.rule?.toPattern(Pattern.MULTILINE) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
book.tocUrl.toPattern(Pattern.MULTILINE) |
|
|
|
|
} |
|
|
|
|
return analyze(rulePattern) |
|
|
|
|
} |
|
|
|
|