Update AnalyzeRule.kt

pull/1155/head
bushixuanqi 4 years ago
parent 40dc6d0ea3
commit 02d05ad3d6
  1. 20
      app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt

@ -66,7 +66,7 @@ class AnalyzeRule(val ruleData: RuleDataInterface) : JsExtensions {
fun setRedirectUrl(url: String): URL? { fun setRedirectUrl(url: String): URL? {
kotlin.runCatching { kotlin.runCatching {
val urlMatcher = AnalyzeUrl.paramPattern.matcher(url) val urlMatcher = AnalyzeUrl.paramPattern.matcher(url)
redirectUrl = URL( if(urlMatcher.find())url.substring(0,urlMatcher.start()) else url) redirectUrl = URL(if (urlMatcher.find()) url.substring(0, urlMatcher.start()) else url)
} }
return redirectUrl return redirectUrl
} }
@ -367,6 +367,8 @@ class AnalyzeRule(val ruleData: RuleDataInterface) : JsExtensions {
mMode = Mode.Regex mMode = Mode.Regex
isRegex = true isRegex = true
start = 1 start = 1
} else if (isRegex) {
mMode = Mode.Regex
} }
var tmp: String var tmp: String
val jsMatcher = JS_PATTERN.matcher(ruleStr) val jsMatcher = JS_PATTERN.matcher(ruleStr)
@ -395,8 +397,10 @@ class AnalyzeRule(val ruleData: RuleDataInterface) : JsExtensions {
* 规则类 * 规则类
*/ */
inner class SourceRule internal constructor(ruleStr: String, mainMode: Mode = Mode.Default) { inner class SourceRule internal constructor(
internal var mode = mainMode ruleStr: String,
internal var mode: Mode = Mode.Default
) {
internal var rule: String internal var rule: String
internal var replaceRegex = "" internal var replaceRegex = ""
internal var replacement = "" internal var replacement = ""
@ -410,9 +414,7 @@ class AnalyzeRule(val ruleData: RuleDataInterface) : JsExtensions {
init { init {
rule = when { rule = when {
mode == Mode.Js || mode == Mode.Regex -> { //splitSourceRule预先确定了Mode.Js和Mode.Regex两种mode,避免被后面的值覆盖先进行判断 mode == Mode.Js || mode == Mode.Regex -> ruleStr
ruleStr
}
ruleStr.startsWith("@CSS:", true) -> { ruleStr.startsWith("@CSS:", true) -> {
mode = Mode.Default mode = Mode.Default
ruleStr ruleStr
@ -433,13 +435,11 @@ class AnalyzeRule(val ruleData: RuleDataInterface) : JsExtensions {
mode = Mode.Json mode = Mode.Json
ruleStr.substring(6) ruleStr.substring(6)
} }
ruleStr.startsWith("$.") || ruleStr.startsWith("$[") || isJSON -> { isJSON || ruleStr.startsWith("$.") || ruleStr.startsWith("$[") -> {
mode = Mode.Json mode = Mode.Json
ruleStr ruleStr
} }
else -> { else -> ruleStr
ruleStr
}
} }
//分离put //分离put
rule = splitPutRule(rule, putMap) rule = splitPutRule(rule, putMap)

Loading…
Cancel
Save