尝试解决ChapterProvider报错

pull/1155/head
gedoor 4 years ago
parent 55efc2e67a
commit 7ede071d5c
  1. 8
      app/src/main/java/io/legado/app/help/ContentHelp.kt
  2. 12
      app/src/main/java/io/legado/app/help/ContentProcessor.kt
  3. 49
      app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt

@ -36,7 +36,7 @@ object ContentHelp {
//如果原文存在分段错误,需要把段落重新黏合 //如果原文存在分段错误,需要把段落重新黏合
for (i in 1 until p.size) { for (i in 1 until p.size) {
if (match(MARK_SENTENCES_END, buffer[buffer.length - 1])) buffer.append("\n") if (match(MARK_SENTENCES_END, buffer[buffer.length - 1])) buffer.append("\n")
// 段落开头以外的地方不应该有空格 // 段落开头以外的地方不应该有空格
// 去除段落内空格。unicode 3000 象形字间隔(中日韩符号和标点),不包含在\s内 // 去除段落内空格。unicode 3000 象形字间隔(中日韩符号和标点),不包含在\s内
buffer.append(p[i].replace("[\u3000\\s]".toRegex(), "")) buffer.append(p[i].replace("[\u3000\\s]".toRegex(), ""))
} }
@ -51,7 +51,7 @@ object ContentHelp {
.replace( .replace(
"([问说喊唱叫骂道着答])[\\.。]".toRegex(), "([问说喊唱叫骂道着答])[\\.。]".toRegex(),
"$1。\n" "$1。\n"
) // .replaceAll("([\\.。\\!!??])([^\"”“]+)[::][\"”“]", "$1\n$2:“") )
.split("\n".toRegex()).toTypedArray() .split("\n".toRegex()).toTypedArray()
buffer = StringBuffer((content1.length * 1.15).toInt()) buffer = StringBuffer((content1.length * 1.15).toInt())
for (s in p) { for (s in p) {
@ -101,9 +101,9 @@ object ContentHelp {
for (i in 0 until l) { for (i in 0 until l) {
string.append('\n') string.append('\n')
string.append(p[i]) string.append(p[i])
// System.out.print(" "+b[i]); //System.out.print(" "+b[i]);
} }
// System.out.println(" " + str); //System.out.println(" " + str);
return string return string
} }

@ -84,15 +84,15 @@ class ContentProcessor private constructor(
} }
} }
val contents = arrayListOf<String>() val contents = arrayListOf<String>()
content1.split("\n").forEach { content1.split("\n").forEach { str ->
val str = it.replace("^[\\n\\r]+".toRegex(), "").trim() val paragraph = str.replace("^[\\n\\r]+".toRegex(), "").trim()
if (contents.isEmpty()) { if (contents.isEmpty()) {
contents.add(title) contents.add(title)
if (str != title && str.isNotEmpty()) { if (paragraph != title && paragraph.isNotEmpty()) {
contents.add("${ReadBookConfig.paragraphIndent}$str") contents.add("${ReadBookConfig.paragraphIndent}$paragraph")
} }
} else if (str.isNotEmpty()) { } else if (paragraph.isNotEmpty()) {
contents.add("${ReadBookConfig.paragraphIndent}$str") contents.add("${ReadBookConfig.paragraphIndent}$paragraph")
} }
} }
return contents return contents

@ -111,26 +111,39 @@ object ChapterProvider {
) )
} }
} else if (book.getImageStyle() != Book.imgStyleText) { } else if (book.getImageStyle() != Book.imgStyleText) {
content.replace(AppPattern.imgPattern.toRegex(), "\n\$0\n").split("\n") val matcher = AppPattern.imgPattern.matcher(content)
.forEach { text -> var start = 0
if (text.isNotBlank()) { while (matcher.find()) {
if (!text.startsWith("<img src=\"")) { //非图片 val text = content.substring(start, matcher.start())
val isTitle = index == 0 if (text.isNotBlank()) {
val textPaint = if (isTitle) titlePaint else contentPaint val isTitle = index == 0
if (!(isTitle && ReadBookConfig.titleMode == 2)) { val textPaint = if (isTitle) titlePaint else contentPaint
durY = setTypeText( if (!(isTitle && ReadBookConfig.titleMode == 2)) {
text, durY, textPages, durY = setTypeText(
stringBuilder, isTitle, textPaint text, durY, textPages,
) stringBuilder, isTitle, textPaint
} )
} else { //图片 }
durY = setTypeImage( }
book, bookChapter, text.substring(10, text.length - 2), durY = setTypeImage(
durY, textPages, book.getImageStyle() book, bookChapter, matcher.group(1)!!,
) durY, textPages, book.getImageStyle()
} )
start = matcher.end()
}
if (start < content.length) {
val text = content.substring(start, content.length)
if (text.isNotBlank()) {
val isTitle = index == 0
val textPaint = if (isTitle) titlePaint else contentPaint
if (!(isTitle && ReadBookConfig.titleMode == 2)) {
durY = setTypeText(
text, durY, textPages,
stringBuilder, isTitle, textPaint
)
} }
} }
}
} }
} }
textPages.last().height = durY + 20.dp textPages.last().height = durY + 20.dp

Loading…
Cancel
Save