diff --git a/app/src/main/java/io/legado/app/help/AppConfig.kt b/app/src/main/java/io/legado/app/help/AppConfig.kt index eddc4f428..ac32d830a 100644 --- a/app/src/main/java/io/legado/app/help/AppConfig.kt +++ b/app/src/main/java/io/legado/app/help/AppConfig.kt @@ -59,7 +59,7 @@ object AppConfig { } val backgroundVerification: Boolean - get() = App.INSTANCE.getPrefBoolean(R.string.pk_background_verification) + get() = App.INSTANCE.getPrefBoolean(R.string.pk_background_verification, true) val autoRefreshBook: Boolean get() = App.INSTANCE.getPrefBoolean(R.string.pk_auto_refresh) diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt index 530dcb33b..57b867219 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt @@ -406,6 +406,9 @@ class AnalyzeRule(var book: BaseBook? = null) : JsExtensions { internal val putMap = HashMap() private val ruleParam = ArrayList() private val ruleType = ArrayList() + private val getRuleType = -2 + private val jsRuleType = -1 + private val defaultRuleType = 0 init { this.mode = mainMode @@ -444,51 +447,60 @@ class AnalyzeRule(var book: BaseBook? = null) : JsExtensions { else -> rule = ruleStr } } - //分离put - rule = splitPutRule(rule, putMap) - //@get,{{ }}, 拆分 - var start = 0 - var tmp: String - val evalMatcher = evalPattern.matcher(rule) - while (evalMatcher.find()) { - if (evalMatcher.start() > start) { - tmp = rule.substring(start, evalMatcher.start()) - splitRegex(tmp) - } - tmp = evalMatcher.group() - when { - tmp.startsWith("@get:", true) -> { - ruleType.add(-2) - ruleParam.add(tmp.substring(6, tmp.lastIndex)) - } - tmp.startsWith("{{") -> { - ruleType.add(-1) - ruleParam.add(tmp.substring(2, tmp.length - 2)) - } - else -> { + if (mode == Mode.Js) { + ruleType.add(defaultRuleType) + ruleParam.add(rule) + } else { + //分离put + rule = splitPutRule(rule, putMap) + //@get,{{ }}, 拆分 + var start = 0 + var tmp: String + val evalMatcher = evalPattern.matcher(rule) + while (evalMatcher.find()) { + if (evalMatcher.start() > start) { + tmp = rule.substring(start, evalMatcher.start()) + if (start == 0 && !tmp.contains("##")) { + mode = Mode.Regex + } splitRegex(tmp) } + tmp = evalMatcher.group() + when { + tmp.startsWith("@get:", true) -> { + ruleType.add(getRuleType) + ruleParam.add(tmp.substring(6, tmp.lastIndex)) + } + tmp.startsWith("{{") -> { + ruleType.add(jsRuleType) + ruleParam.add(tmp.substring(2, tmp.length - 2)) + } + else -> { + splitRegex(tmp) + } + } + start = evalMatcher.end() + } + if (rule.length > start) { + tmp = rule.substring(start) + splitRegex(tmp) } - start = evalMatcher.end() - } - if (rule.length > start) { - tmp = rule.substring(start) - splitRegex(tmp) } } + /** + * 拆分\$\d{1,2} + */ private fun splitRegex(ruleStr: String) { var start = 0 var tmp: String val ruleStrArray = ruleStr.split("##") val regexMatcher = regexPattern.matcher(ruleStrArray[0]) while (regexMatcher.find()) { - if (mode != Mode.Js) { - mode = Mode.Regex - } + mode = Mode.Regex if (regexMatcher.start() > start) { tmp = ruleStr.substring(start, regexMatcher.start()) - ruleType.add(0) + ruleType.add(defaultRuleType) ruleParam.add(tmp) } tmp = regexMatcher.group() @@ -498,7 +510,7 @@ class AnalyzeRule(var book: BaseBook? = null) : JsExtensions { } if (ruleStr.length > start) { tmp = ruleStr.substring(start) - ruleType.add(0) + ruleType.add(defaultRuleType) ruleParam.add(tmp) } } @@ -513,7 +525,7 @@ class AnalyzeRule(var book: BaseBook? = null) : JsExtensions { while (index-- > 0) { val regType = ruleType[index] when { - regType > 0 -> { + regType > defaultRuleType -> { @Suppress("UNCHECKED_CAST") val resultList = result as? List if (resultList != null) { @@ -526,7 +538,7 @@ class AnalyzeRule(var book: BaseBook? = null) : JsExtensions { infoVal.insert(0, ruleParam[index]) } } - regType == -1 -> { + regType == jsRuleType -> { if (isRule(ruleParam[index])) { getString(arrayListOf(SourceRule(ruleParam[index]))).let { infoVal.insert(0, it) @@ -544,7 +556,7 @@ class AnalyzeRule(var book: BaseBook? = null) : JsExtensions { } } } - regType == -2 -> { + regType == getRuleType -> { infoVal.insert(0, get(ruleParam[index])) } else -> infoVal.insert(0, ruleParam[index]) @@ -652,7 +664,7 @@ class AnalyzeRule(var book: BaseBook? = null) : JsExtensions { private val getPattern = Pattern.compile("@get:\\{([^}]+?)\\}", Pattern.CASE_INSENSITIVE) private val evalPattern = Pattern.compile("@get:\\{[^}]+?\\}|\\{\\{[\\w\\W]*?\\}\\}", Pattern.CASE_INSENSITIVE) - private val regexPattern = Pattern.compile("\\\$\\d{1,2}") + private val regexPattern = Pattern.compile("\\$\\d{1,2}") } } diff --git a/app/src/main/res/xml/pref_config_other.xml b/app/src/main/res/xml/pref_config_other.xml index f4f28ca94..0bc8ae32c 100644 --- a/app/src/main/res/xml/pref_config_other.xml +++ b/app/src/main/res/xml/pref_config_other.xml @@ -52,7 +52,7 @@ app:layout="@layout/view_preference_category">