syomie 4 лет назад
Родитель
Сommit
fba9053bbc

+ 9 - 3
CHANGELOG.md

@@ -1,4 +1,10 @@
-**2021/08/09**
+**2022/02/27**
 
-1. 修复选择文字不能选择单个文字的bug
-2. 
+* APP内编写规则时,对由XPath|JSOUP|CSS组成的规则进行简单的默认补全。
+* 对需求文本的获取text
+* 对需求文本的img元素(以img结尾)的获取alt属性
+* 对需求链接的获取href属性
+* 对需求图片的获取src属性
+* 详情页预处理存在js/json/正则的不对详情页规则进行补全
+* 多条规则只补全最后一条规则
+* 书源编辑页点击调试/保存时补全开始生效,注意:不改变编辑框内容显示,保存后再次编辑可查看补全后的规则,方便调试时快速修改规则

+ 25 - 26
app/src/main/java/io/legado/app/help/ruleComplete.kt

@@ -1,11 +1,11 @@
 package io.legado.app.help
 
 // 补全时忽略匹配规则
-val completeIgnore=Regex("""##|@js:|<js>|@Json:|\$.|(text|ownText|textNodes|href|content|html|alt|all|value|src)(\(\)|##.*)?\s*$""")
-// 匹配从图片获取信息的规则
-val imgComplete=Regex("""(?<=(tag\.|[\+/@~>\| \&]))img[@/]text(\(\))?$|^img[@/]text(\(\))?$""",RegexOption.IGNORE_CASE)
+val completeIgnore=Regex("""\\n|##|@js:|<js>|@Json:|\$.|(text|ownText|textNodes|href|content|html|alt|all|value|src)(\(\)|##.*)?\s*$""")
 // 补全时忽略匹配的规则(仅对详情页预处理规则生效)
 val completeIgnorePreRule=Regex("""^:|##|@js:|<js>|@Json:|\$.""")
+// 匹配从图片获取信息的规则
+val imgComplete=Regex("""(?<=(tag\.|[\+/@~>\| \&]))img[@/]text(\(\))?$|^img[@/]text(\(\))?$""",RegexOption.IGNORE_CASE)
 /**
  * 对简单规则进行补全,简化部分书源规则的编写
  * 该方法仅对对JSOUP/XPath/CSS规则生效
@@ -20,27 +20,26 @@ val completeIgnorePreRule=Regex("""^:|##|@js:|<js>|@Json:|\$.""")
  *  3 图片
  */
 fun ruleComplete(rule:String?,preRule:String?="",type:Int=1):String?{
-  if (rule.isNullOrEmpty()||rule.contains(completeIgnore)||preRule?.contains(completeIgnorePreRule)?:false){
-    return rule
-  }
-  var textRule:String
-  var linkRule:String
-  var imgRule:String
-  if (rule.contains(Regex("/[^@]+$"))){
-    textRule="/text()"
-    linkRule="/@href"
-    imgRule="/@src"
-  }else{
-    textRule="@text"
-    linkRule="@href"
-    imgRule="@src"
-  }
-  var ret:String=rule
-  when(type){
-    1 -> ret = rule.replace(Regex("$"),textRule).replace(imgComplete,"img@alt")
-    2 -> ret = rule.replace(Regex("$"),linkRule)
-    3 -> ret = rule.replace(Regex("$"),imgRule)
-  }
-  return ret
+    if (rule.isNullOrEmpty()||rule.contains(completeIgnore)||preRule?.contains(completeIgnorePreRule)?:false){
+        return rule
+    }
+    var textRule:String
+    var linkRule:String
+    var imgRule:String
+    if (rule.contains(Regex("/[^@]+$"))){
+        textRule="/text()"
+        linkRule="/@href"
+        imgRule="/@src"
+    }else{
+        textRule="@text"
+        linkRule="@href"
+        imgRule="@src"
+    }
+    var ret:String=rule
+    when(type){
+        1 -> ret = rule.replace(Regex("$"),textRule).replace(imgComplete,"img@alt")
+        2 -> ret = rule.replace(Regex("$"),linkRule)
+        3 -> ret = rule.replace(Regex("$"),imgRule)
+    }
+    return ret
 }
-

+ 0 - 1
app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt

@@ -486,5 +486,4 @@ class BookSourceEditActivity :
             }
         }
     }
-
 }