|
@@ -5,10 +5,19 @@ import io.legado.app.data.appDb
|
|
|
import io.legado.app.data.entities.ReplaceRule
|
|
import io.legado.app.data.entities.ReplaceRule
|
|
|
import io.legado.app.utils.GSON
|
|
import io.legado.app.utils.GSON
|
|
|
import io.legado.app.utils.fromJsonObject
|
|
import io.legado.app.utils.fromJsonObject
|
|
|
|
|
+import io.legado.app.utils.replace
|
|
|
|
|
+import io.legado.app.utils.stackTraceStr
|
|
|
|
|
+import kotlinx.coroutines.runBlocking
|
|
|
|
|
|
|
|
object ReplaceRuleController {
|
|
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 {
|
|
fun saveRule(postData: String?): ReturnData {
|
|
@@ -26,11 +35,64 @@ object ReplaceRuleController {
|
|
|
return returnData
|
|
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 {
|
|
fun testRule(postData: String?): ReturnData {
|
|
|
val returnData = ReturnData()
|
|
val returnData = ReturnData()
|
|
|
postData ?: return returnData.setErrorMsg("数据不能为空")
|
|
postData ?: return returnData.setErrorMsg("数据不能为空")
|
|
|
val map = GSON.fromJsonObject<Map<String, *>>(postData).getOrNull()
|
|
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
|
|
return returnData
|
|
|
}
|
|
}
|
|
|
|
|
|