mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
替换规则添加作用于标题和作用于正文
This commit is contained in:
@@ -42,11 +42,18 @@ interface ReplaceRuleDao {
|
||||
fun findByIds(vararg ids: Long): List<ReplaceRule>
|
||||
|
||||
@Query(
|
||||
"""SELECT * FROM replace_rules WHERE isEnabled = 1
|
||||
"""SELECT * FROM replace_rules WHERE isEnabled = 1 and scopeContent = 1
|
||||
AND (scope LIKE '%' || :name || '%' or scope LIKE '%' || :origin || '%' or scope is null or scope = '')
|
||||
order by sortOrder"""
|
||||
)
|
||||
fun findEnabledByScope(name: String, origin: String): List<ReplaceRule>
|
||||
fun findEnabledByContentScope(name: String, origin: String): List<ReplaceRule>
|
||||
|
||||
@Query(
|
||||
"""SELECT * FROM replace_rules WHERE isEnabled = 1 and scopeTitle = 1
|
||||
AND (scope LIKE '%' || :name || '%' or scope LIKE '%' || :origin || '%' or scope is null or scope = '')
|
||||
order by sortOrder"""
|
||||
)
|
||||
fun findEnabledByTitleScope(name: String, origin: String): List<ReplaceRule>
|
||||
|
||||
@Query("select * from replace_rules where `group` like '%' || :group || '%'")
|
||||
fun getByGroup(group: String): List<ReplaceRule>
|
||||
|
||||
@@ -74,7 +74,7 @@ data class BookChapter(
|
||||
|
||||
@Suppress("unused")
|
||||
fun getDisplayTitle(
|
||||
replaceRules: Array<ReplaceRule>? = null,
|
||||
replaceRules: List<ReplaceRule>? = null,
|
||||
useReplace: Boolean = true,
|
||||
chineseConvert: Boolean = true,
|
||||
): String {
|
||||
|
||||
@@ -37,7 +37,8 @@ class ContentProcessor private constructor(
|
||||
|
||||
}
|
||||
|
||||
private val replaceRules = arrayListOf<ReplaceRule>()
|
||||
private val titleReplaceRules = arrayListOf<ReplaceRule>()
|
||||
private val contentReplaceRules = arrayListOf<ReplaceRule>()
|
||||
|
||||
init {
|
||||
upReplaceRules()
|
||||
@@ -45,13 +46,25 @@ class ContentProcessor private constructor(
|
||||
|
||||
@Synchronized
|
||||
fun upReplaceRules() {
|
||||
replaceRules.clear()
|
||||
replaceRules.addAll(appDb.replaceRuleDao.findEnabledByScope(bookName, bookOrigin))
|
||||
titleReplaceRules.clear()
|
||||
contentReplaceRules.clear()
|
||||
titleReplaceRules.addAll(appDb.replaceRuleDao.findEnabledByTitleScope(bookName, bookOrigin))
|
||||
contentReplaceRules.addAll(
|
||||
appDb.replaceRuleDao.findEnabledByContentScope(
|
||||
bookName,
|
||||
bookOrigin
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun getReplaceRules(): Array<ReplaceRule> {
|
||||
return replaceRules.toTypedArray()
|
||||
fun getTitleReplaceRules(): List<ReplaceRule> {
|
||||
return titleReplaceRules
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun getContentReplaceRules(): List<ReplaceRule> {
|
||||
return contentReplaceRules
|
||||
}
|
||||
|
||||
fun getContent(
|
||||
@@ -94,7 +107,7 @@ class ContentProcessor private constructor(
|
||||
}
|
||||
if (includeTitle) {
|
||||
//重新添加标题
|
||||
mContent = chapter.getDisplayTitle(getReplaceRules()) + "\n" + mContent
|
||||
mContent = chapter.getDisplayTitle(getTitleReplaceRules()) + "\n" + mContent
|
||||
}
|
||||
val contents = arrayListOf<String>()
|
||||
mContent.split("\n").forEach { str ->
|
||||
@@ -114,7 +127,7 @@ class ContentProcessor private constructor(
|
||||
|
||||
fun replaceContent(content: String): String {
|
||||
var mContent = content
|
||||
getReplaceRules().forEach { item ->
|
||||
getContentReplaceRules().forEach { item ->
|
||||
if (item.pattern.isNotEmpty()) {
|
||||
try {
|
||||
mContent = if (item.isRegex) {
|
||||
|
||||
@@ -352,7 +352,7 @@ object ReadBook : CoroutineScope by MainScope() {
|
||||
if (chapter.index in durChapterIndex - 1..durChapterIndex + 1) {
|
||||
val contentProcessor = ContentProcessor.get(book.name, book.origin)
|
||||
val displayTitle = chapter.getDisplayTitle(
|
||||
contentProcessor.getReplaceRules(),
|
||||
contentProcessor.getContentReplaceRules(),
|
||||
book.getUseReplaceRule()
|
||||
)
|
||||
val contents = contentProcessor.getContent(book, chapter, content)
|
||||
|
||||
@@ -52,7 +52,7 @@ class ChapterListAdapter(context: Context, val callback: Callback) :
|
||||
|
||||
private val replaceRules
|
||||
get() = callback.book?.let {
|
||||
ContentProcessor.get(it.name, it.origin).getReplaceRules()
|
||||
ContentProcessor.get(it.name, it.origin).getTitleReplaceRules()
|
||||
}
|
||||
private val useReplace
|
||||
get() = AppConfig.tocUiUseReplace && callback.book?.getUseReplaceRule() == true
|
||||
|
||||
Reference in New Issue
Block a user