|
|
|
@ -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 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|