更新CHANGELOG.md

pull/1652/head
syomie 3 years ago
parent 148c060256
commit de41eac7a1
  1. 12
      CHANGELOG.md
  2. 51
      app/src/main/java/io/legado/app/help/ruleComplete.kt
  3. 1
      app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt

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

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

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

Loading…
Cancel
Save