Updated rule

pull/32/head
atbest 6 years ago
parent a6c0acf07f
commit f898a8ed35
  1. 12
      app/src/main/java/io/legado/app/data/entities/rule/Rule.kt

@ -1,6 +1,7 @@
package io.legado.app.data.entities.rule package io.legado.app.data.entities.rule
import io.legado.app.utils.splitNotBlank import io.legado.app.utils.splitNotBlank
import io.legado.app.utils.strim
data class Rule ( data class Rule (
var selectors: List<BaseRule>, var selectors: List<BaseRule>,
@ -29,7 +30,7 @@ data class Rule (
if (line.contains("@@")) { if (line.contains("@@")) {
val temp = line.split("@@") val temp = line.split("@@")
baseRule.selector = temp[0].trim() baseRule.selector = temp[0].trim()
baseRule.attr = temp[1].trim() baseRule.attr = temp[1].strim() ?: "text" // 写了 @@ 但是后面空白的也默认为 text
} else { } else {
baseRule.selector = line baseRule.selector = line
baseRule.attr = "text" baseRule.attr = "text"
@ -69,6 +70,7 @@ data class Rule (
for (line in rawRule.splitNotBlank("\n")) { for (line in rawRule.splitNotBlank("\n")) {
subRule.clear() subRule.clear()
val baseRule = BaseRule(type = RuleType.JSON) val baseRule = BaseRule(type = RuleType.JSON)
// 保留 URL 中的 % 字符
baseRule.template = CONST_PATTERN.replace(line.replace("%", "%%")) { match -> baseRule.template = CONST_PATTERN.replace(line.replace("%", "%%")) { match ->
subRule.add(match.groupValues[1]) subRule.add(match.groupValues[1])
"%s" "%s"
@ -87,10 +89,16 @@ data class Rule (
} }
/* /*
*
* CSS 规则说明
* 使用 JSOUP "选择规则"后面加上需要获取的属性名或者方法 href, data-url, text 如果不加默认为 text
* CSS "选择规则" "属性方法" 之间用 @@ 隔开
*
* CONST 规则说明 * CONST 规则说明
* {$.xxx} 表示要获取 JSON 变量 $.xxx * {$.xxx} 表示要获取 JSON 变量 $.xxx最先解析
* {@.yyy} 表示要获取之前存储的变量 yyy * {@.yyy} 表示要获取之前存储的变量 yyy
* {#.zzz} 表示直接输出 zzz可以留空{#.} 什么也不输出 * {#.zzz} 表示直接输出 zzz可以留空{#.} 什么也不输出
*
* */ * */
enum class RuleType { enum class RuleType {
CSS, XPATH, JSON, REGEX, CONST, JS, HYBRID CSS, XPATH, JSON, REGEX, CONST, JS, HYBRID

Loading…
Cancel
Save