diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt index b8b283136..c6c332e97 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt @@ -113,27 +113,29 @@ class AnalyzeUrl( */ private fun analyzeJs() { var start = 0 + var tmp: String val jsMatcher = JS_PATTERN.matcher(ruleUrl) - var result = ruleUrl + var hasRule = true while (jsMatcher.find()) { - if (jsMatcher.start() > start && start > 0) { - ruleUrl.substring(start, jsMatcher.start()).trim().let { - if (it.isNotEmpty()) { - result = it.replace("@result", result) - } + if (jsMatcher.start() > start) { + tmp = + ruleUrl.substring(start, jsMatcher.start()).trim { it <= ' ' } + if (tmp.isNotEmpty()) { + ruleUrl = tmp.replace("@result", ruleUrl) } } - result = evalJS(jsMatcher.group(2) ?: jsMatcher.group(1), result) as String + ruleUrl = evalJS(jsMatcher.group(2) ?: jsMatcher.group(1), ruleUrl) as String start = jsMatcher.end() - } - if (ruleUrl.length > start) { - ruleUrl.substring(start).trim().let { - if (it.isNotEmpty()) { - result = it.replace("@result", result) - } + if (jsMatcher.group(0)!!.startsWith("@js:", true)) { + hasRule = false + } + } + if (ruleUrl.length > start && hasRule) { + tmp = ruleUrl.substring(start).trim { it <= ' ' } + if (tmp.isNotEmpty()) { + ruleUrl = tmp.replace("@result", ruleUrl) } } - ruleUrl = result } /**