diff --git a/app/src/main/java/io/legado/app/constant/AppPattern.kt b/app/src/main/java/io/legado/app/constant/AppPattern.kt index a94b68d34..c50c40ca4 100644 --- a/app/src/main/java/io/legado/app/constant/AppPattern.kt +++ b/app/src/main/java/io/legado/app/constant/AppPattern.kt @@ -5,9 +5,9 @@ import java.util.regex.Pattern @Suppress("RegExpRedundantEscape") object AppPattern { val JS_PATTERN: Pattern = - Pattern.compile("([\\w\\W]+?)", Pattern.CASE_INSENSITIVE) + Pattern.compile("([\\w\\W]+?)", Pattern.CASE_INSENSITIVE) val JS_PATTERN_END: Pattern = - Pattern.compile("(@js:[\\w\\W]+)", Pattern.CASE_INSENSITIVE) + Pattern.compile("@js:([\\w\\W]+)", Pattern.CASE_INSENSITIVE) val EXP_PATTERN: Pattern = Pattern.compile("\\{\\{([\\w\\W]*?)\\}\\}") //匹配格式化后的图片格式 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 e22a90ec6..dc874534b 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,25 +406,25 @@ class AnalyzeRule(val ruleData: RuleDataInterface) : JsExtensions { ruleList.add(SourceRule(mode(tmp), mMode)) } } - ruleList.add(SourceRule(jsMatcher.group().run{ substring(4, lastIndexOf("<")) }, Mode.Js)) + ruleList.add(SourceRule(jsMatcher.group(1)!!, Mode.Js)) start = jsMatcher.end() } if (ruleStr.length > start){ val jsMatcherEnd = AppPattern.JS_PATTERN_END.matcher(ruleStr.substring(start)) if(jsMatcherEnd.find()){ - tmp = ruleStr.substring(start, jsMatcher.start()).trim { it <= ' ' } + tmp = ruleStr.substring(start, jsMatcherEnd.start()).trim { it <= ' ' } if (tmp.isNotEmpty()) { ruleList.add(SourceRule(mode(tmp), mMode)) } - } - ruleList.add(SourceRule(jsMatcher.group().substring(4), Mode.Js)) + ruleList.add(SourceRule(jsMatcherEnd.group(1)!!, Mode.Js)) }else{ tmp = ruleStr.substring(start).trim { it <= ' ' } if (tmp.isNotEmpty()) { ruleList.add(SourceRule(mode(tmp), mMode)) } } + } return ruleList } 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 862e7759f..5423768c4 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 @@ -73,7 +73,6 @@ class AnalyzeUrl( } private fun analyzeJs() { - val ruleList = arrayListOf() var start = 0 var tmp: String val jsMatcher = JS_PATTERN.matcher(ruleUrl) @@ -82,10 +81,10 @@ class AnalyzeUrl( tmp = ruleUrl.substring(start, jsMatcher.start()).trim { it <= ' ' } if (tmp.isNotEmpty()) { - ruleList.add(tmp) + ruleUrl = tmp.replace("@result", ruleUrl) } } - ruleList.add(jsMatcher.group()) + ruleUrl = evalJS(jsMatcher.group(1)!!, ruleUrl) as String start = jsMatcher.end() } if (ruleUrl.length > start) { @@ -95,32 +94,17 @@ class AnalyzeUrl( tmp = ruleUrl.substring(start, jsMatcherEnd.start()).trim { it <= ' ' } if (tmp.isNotEmpty()) { - ruleList.add(tmp) + ruleUrl = tmp.replace("@result", ruleUrl) } } - ruleList.add(jsMatcherEnd.group()) + ruleUrl = evalJS(jsMatcherEnd.group(1)!!, ruleUrl) as String }else{ tmp = ruleUrl.substring(start).trim { it <= ' ' } if (tmp.isNotEmpty()) { - ruleList.add(tmp) + ruleUrl = tmp.replace("@result", ruleUrl) } } } - - for (rule in ruleList) { - var ruleStr = rule - when { - ruleStr.startsWith("") -> { - ruleStr = ruleStr.substring(4, ruleStr.lastIndexOf("<")) - ruleUrl = evalJS(ruleStr, ruleUrl) as String - } - ruleStr.startsWith("@js", true) -> { - ruleStr = ruleStr.substring(4) - ruleUrl = evalJS(ruleStr, ruleUrl) as String - } - else -> ruleUrl = ruleStr.replace("@result", ruleUrl) - } - } } /**