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)
- }
- }
}
/**