This commit is contained in:
kunfei
2022-10-21 21:22:01 +08:00
parent 3d4e7411e2
commit 4356a1a3a8
2 changed files with 69 additions and 2 deletions
@@ -5,10 +5,19 @@ import io.legado.app.data.appDb
import io.legado.app.data.entities.ReplaceRule
import io.legado.app.utils.GSON
import io.legado.app.utils.fromJsonObject
import io.legado.app.utils.replace
import io.legado.app.utils.stackTraceStr
import kotlinx.coroutines.runBlocking
object ReplaceRuleController {
val allRules get() = appDb.replaceRuleDao.all
val allRules: ReturnData
get() {
val rules = appDb.replaceRuleDao.all
val returnData = ReturnData()
returnData.setData(GSON.toJson(rules))
return returnData
}
fun saveRule(postData: String?): ReturnData {
@@ -26,11 +35,64 @@ object ReplaceRuleController {
return returnData
}
fun delete(postData: String?): ReturnData {
val returnData = ReturnData()
postData ?: return returnData.setErrorMsg("数据不能为空")
val rule = GSON.fromJsonObject<ReplaceRule>(postData).getOrNull()
if (rule == null) {
returnData.setErrorMsg("格式不对")
} else {
appDb.replaceRuleDao.delete(rule)
}
return returnData
}
/**
* 传入测试数据格式
* {
* rule: Replace,
* text: "xxx"
* }
*/
fun testRule(postData: String?): ReturnData {
val returnData = ReturnData()
postData ?: return returnData.setErrorMsg("数据不能为空")
val map = GSON.fromJsonObject<Map<String, *>>(postData).getOrNull()
if (map == null) {
returnData.setErrorMsg("格式不对")
} else {
val rule = map["rule"]?.let {
if (it is String) {
GSON.fromJsonObject<ReplaceRule>(it).getOrNull()
} else {
GSON.fromJsonObject<ReplaceRule>(GSON.toJson(it)).getOrNull()
}
}
if (rule == null) {
returnData.setErrorMsg("格式不对")
return returnData
}
if (rule.pattern.isEmpty()) {
returnData.setErrorMsg("替换规则不能为空")
}
val text = map["text"] as String
val content = runBlocking {
try {
if (rule.isRegex) {
text.replace(
rule.pattern.toRegex(),
rule.replacement, rule.timeoutMillisecond
)
} else {
text.replace(rule.pattern, rule.replacement)
}
} catch (e: Exception) {
e.stackTraceStr
}
}
returnData.setData(content)
}
return returnData
}