Merge branch 'gedoor:master' into master

pull/1112/head
bushixuanqi 3 years ago committed by GitHub
commit 30cc06e038
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      app/build.gradle
  2. 1
      app/src/main/java/io/legado/app/App.kt
  3. 36
      app/src/main/java/io/legado/app/model/analyzeRule/RuleAnalyzer.kt
  4. 12
      app/src/main/java/io/legado/app/utils/EventBusExtensions.kt

@ -162,7 +162,7 @@ dependencies {
testImplementation "androidx.room:room-testing:$room_version" testImplementation "androidx.room:room-testing:$room_version"
//liveEventBus //liveEventBus
implementation 'com.jeremyliao:live-event-bus-x:1.5.7' implementation 'io.github.jeremyliao:live-event-bus-x:1.8.0'
// //
def coroutines_version = '1.4.3' def coroutines_version = '1.4.3'

@ -26,7 +26,6 @@ class App : MultiDexApplication() {
createNotificationChannels() createNotificationChannels()
applyDayNight(this) applyDayNight(this)
LiveEventBus.config() LiveEventBus.config()
.supportBroadcast(this)
.lifecycleObserverAlwaysActive(true) .lifecycleObserverAlwaysActive(true)
.autoClear(false) .autoClear(false)
registerActivityLifecycleCallbacks(ActivityHelp) registerActivityLifecycleCallbacks(ActivityHelp)

@ -92,13 +92,13 @@ class RuleAnalyzer(data: String, code: Boolean = false) {
//其中js只要符合语法,就不用避开任何阅读关键字,自由发挥 //其中js只要符合语法,就不用避开任何阅读关键字,自由发挥
fun chompJsBalanced( fun chompJsBalanced(
f: ((Char) -> Boolean?) = { f: ((Char) -> Boolean?) = {
when (it) { when (it) {
'{' -> true //开始嵌套一层 '{' -> true //开始嵌套一层
'}' -> false //闭合一层嵌套 '}' -> false //闭合一层嵌套
else -> null else -> null
}
} }
}
): Boolean { ): Boolean {
var pos = pos //声明变量记录临时处理位置 var pos = pos //声明变量记录临时处理位置
var depth = 0 //嵌套深度 var depth = 0 //嵌套深度
@ -116,11 +116,11 @@ class RuleAnalyzer(data: String, code: Boolean = false) {
var c = queue[pos++] var c = queue[pos++]
if (c != '\\') { //非转义字符 if (c != '\\') { //非转义字符
if (c == '\'' && !commits && !commit && !regex && !inDoubleQuote && !inOtherQuote) inSingleQuote = if (c == '\'' && !commits && !commit && !regex && !inDoubleQuote && !inOtherQuote) inSingleQuote =
!inSingleQuote //匹配具有语法功能的单引号 !inSingleQuote //匹配具有语法功能的单引号
else if (c == '"' && !commits && !commit && !regex && !inSingleQuote && !inOtherQuote) inDoubleQuote = else if (c == '"' && !commits && !commit && !regex && !inSingleQuote && !inOtherQuote) inDoubleQuote =
!inDoubleQuote //匹配具有语法功能的双引号 !inDoubleQuote //匹配具有语法功能的双引号
else if (c == '`' && !commits && !commit && !regex && !inSingleQuote && !inDoubleQuote) inOtherQuote = else if (c == '`' && !commits && !commit && !regex && !inSingleQuote && !inDoubleQuote) inOtherQuote =
!inOtherQuote //匹配具有语法功能的'`' !inOtherQuote //匹配具有语法功能的'`'
else if (c == '/' && !commits && !commit && !regex && !inSingleQuote && !inDoubleQuote && !inOtherQuote) { //匹配注释或正则起点 else if (c == '/' && !commits && !commit && !regex && !inSingleQuote && !inDoubleQuote && !inOtherQuote) { //匹配注释或正则起点
c = queue[pos++] c = queue[pos++]
when (c) { when (c) {
@ -300,10 +300,7 @@ class RuleAnalyzer(data: String, code: Boolean = false) {
val next = if (queue[pos] == '[') ']' else ')' //平衡组末尾字符 val next = if (queue[pos] == '[') ']' else ')' //平衡组末尾字符
if (!chompBalanced(queue[pos], next)) throw Error( if (!chompBalanced(queue[pos], next)) throw Error(
queue.substring( queue.substring(0, start) + "后未平衡"
0,
start
) + "后未平衡"
) //拉出一个筛选器,不平衡则报错 ) //拉出一个筛选器,不平衡则报错
} while (end > pos) } while (end > pos)
@ -360,10 +357,7 @@ class RuleAnalyzer(data: String, code: Boolean = false) {
val next = if (queue[pos] == '[') ']' else ')' //平衡组末尾字符 val next = if (queue[pos] == '[') ']' else ')' //平衡组末尾字符
if (!chompBalanced(queue[pos], next)) throw Error( if (!chompBalanced(queue[pos], next)) throw Error(
queue.substring( queue.substring(0, start) + "后未平衡"
0,
start
) + "后未平衡"
) //拉出一个筛选器,不平衡则报错 ) //拉出一个筛选器,不平衡则报错
} while (end > pos) } while (end > pos)
@ -386,10 +380,10 @@ class RuleAnalyzer(data: String, code: Boolean = false) {
* *
* */ * */
fun innerRule( fun innerRule(
inner: String, inner: String,
startStep: Int = 1, startStep: Int = 1,
endStep: Int = 1, endStep: Int = 1,
fr: (String) -> String? fr: (String) -> String?
): String { ): String {
val st = StringBuilder() val st = StringBuilder()

@ -13,11 +13,15 @@ inline fun <reified EVENT> eventObservable(tag: String): Observable<EVENT> {
} }
inline fun <reified EVENT> postEvent(tag: String, event: EVENT) { inline fun <reified EVENT> postEvent(tag: String, event: EVENT) {
LiveEventBus.get(tag).post(event) LiveEventBus.get<EVENT>(tag).post(event)
} }
inline fun <reified EVENT> postEventDelay(tag: String, event: EVENT, delay: Long) { inline fun <reified EVENT> postEventDelay(tag: String, event: EVENT, delay: Long) {
LiveEventBus.get(tag).postDelay(event, delay) LiveEventBus.get<EVENT>(tag).postDelay(event, delay)
}
inline fun <reified EVENT> postEventOrderly(tag: String, event: EVENT) {
LiveEventBus.get<EVENT>(tag).postOrderly(event)
} }
inline fun <reified EVENT> AppCompatActivity.observeEvent( inline fun <reified EVENT> AppCompatActivity.observeEvent(
@ -32,7 +36,6 @@ inline fun <reified EVENT> AppCompatActivity.observeEvent(
} }
} }
inline fun <reified EVENT> AppCompatActivity.observeEventSticky( inline fun <reified EVENT> AppCompatActivity.observeEventSticky(
vararg tags: String, vararg tags: String,
noinline observer: (EVENT) -> Unit noinline observer: (EVENT) -> Unit
@ -67,5 +70,4 @@ inline fun <reified EVENT> Fragment.observeEventSticky(
tags.forEach { tags.forEach {
eventObservable<EVENT>(it).observeSticky(this, o) eventObservable<EVENT>(it).observeSticky(this, o)
} }
} }
Loading…
Cancel
Save