diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cae673ed..f17e7d22a 100644 --- a/CHANGELOG.md +++ b/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/正则的不对详情页规则进行补全 +* 多条规则只补全最后一条规则 +* 书源编辑页点击调试/保存时补全开始生效,注意:不改变编辑框内容显示,保存后再次编辑可查看补全后的规则,方便调试时快速修改规则 diff --git a/app/src/main/java/io/legado/app/help/ruleComplete.kt b/app/src/main/java/io/legado/app/help/ruleComplete.kt index da04af7db..3351f4b5a 100644 --- a/app/src/main/java/io/legado/app/help/ruleComplete.kt +++ b/app/src/main/java/io/legado/app/help/ruleComplete.kt @@ -1,11 +1,11 @@ package io.legado.app.help // 补全时忽略匹配规则 -val completeIgnore=Regex("""##|@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:||@Json:|\$.|(text|ownText|textNodes|href|content|html|alt|all|value|src)(\(\)|##.*)?\s*$""") // 补全时忽略匹配的规则(仅对详情页预处理规则生效) val completeIgnorePreRule=Regex("""^:|##|@js:||@Json:|\$.""") +// 匹配从图片获取信息的规则 +val imgComplete=Regex("""(?<=(tag\.|[\+/@~>\| \&]))img[@/]text(\(\))?$|^img[@/]text(\(\))?$""",RegexOption.IGNORE_CASE) /** * 对简单规则进行补全,简化部分书源规则的编写 * 该方法仅对对JSOUP/XPath/CSS规则生效 @@ -20,27 +20,26 @@ val completeIgnorePreRule=Regex("""^:|##|@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 } - diff --git a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt index 14dd98f18..044fb660c 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt @@ -486,5 +486,4 @@ class BookSourceEditActivity : } } } - }