From cccfee70ab070a6502d74dba3b08177b99f33e88 Mon Sep 17 00:00:00 2001 From: bushixuanqi <2208877960@qq.com> Date: Fri, 16 Jul 2021 02:41:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=93=BE=E6=8E=A5=E5=88=86?= =?UTF-8?q?=E5=89=B2=E8=A7=84=E5=88=99=EF=BC=8C=E9=81=BF=E5=85=8D=E9=99=84?= =?UTF-8?q?=E5=8A=A0=E5=8F=82=E6=95=B0=E4=B8=AD=E5=AD=98=E5=9C=A8=20,{=20?= =?UTF-8?q?=E6=97=B6=E5=AF=BC=E8=87=B4=E8=A7=84=E5=88=99=E5=88=87=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复这种页数列表写法中,js部分内含 < 或 > 会切割错误的问题 优化格式化图片标签操作和匹配图片标签操作,加快图片处理速度。 --- .../java/io/legado/app/constant/AppPattern.kt | 4 +-- .../app/model/analyzeRule/AnalyzeRule.kt | 8 +++--- .../app/model/analyzeRule/AnalyzeUrl.kt | 26 ++++--------------- 3 files changed, 11 insertions(+), 27 deletions(-) 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) - } - } } /**