kunfei vor 3 Jahren
Ursprung
Commit
ca48b949de

+ 0 - 1
app/src/main/assets/updateLog.md

@@ -14,7 +14,6 @@
 **2023/03/24**
 **2023/03/24**
 
 
 * 更新cronet: 111.0.5563.115
 * 更新cronet: 111.0.5563.115
-* 更新到 rhino-1.7.14.1
 * 修复bug
 * 修复bug
 * 其中一些更新由 Xwite, Horis提供
 * 其中一些更新由 Xwite, Horis提供
 
 

+ 0 - 6
app/src/main/java/io/legado/app/constant/AppConst.kt

@@ -4,8 +4,6 @@ import android.annotation.SuppressLint
 import android.content.pm.PackageManager
 import android.content.pm.PackageManager
 import android.provider.Settings
 import android.provider.Settings
 import androidx.annotation.Keep
 import androidx.annotation.Keep
-import com.script.rhino.RhinoScriptEngine
-
 import io.legado.app.BuildConfig
 import io.legado.app.BuildConfig
 import io.legado.app.utils.channel
 import io.legado.app.utils.channel
 import splitties.init.appCtx
 import splitties.init.appCtx
@@ -28,10 +26,6 @@ object AppConst {
 
 
     const val DEFAULT_WEBDAV_ID = -1L
     const val DEFAULT_WEBDAV_ID = -1L
 
 
-    val SCRIPT_ENGINE: RhinoScriptEngine by lazy {
-        RhinoScriptEngine()
-    }
-
     val timeFormat: SimpleDateFormat by lazy {
     val timeFormat: SimpleDateFormat by lazy {
         SimpleDateFormat("HH:mm")
         SimpleDateFormat("HH:mm")
     }
     }

+ 7 - 0
app/src/main/java/io/legado/app/constant/ScriptEngine.kt

@@ -0,0 +1,7 @@
+package io.legado.app.constant
+
+import com.script.rhino.RhinoScriptEngine
+
+val SCRIPT_ENGINE: RhinoScriptEngine by lazy {
+    RhinoScriptEngine()
+}

+ 2 - 1
app/src/main/java/io/legado/app/data/entities/BaseSource.kt

@@ -4,6 +4,7 @@ import cn.hutool.crypto.symmetric.AES
 import com.script.SimpleBindings
 import com.script.SimpleBindings
 import io.legado.app.constant.AppConst
 import io.legado.app.constant.AppConst
 import io.legado.app.constant.AppLog
 import io.legado.app.constant.AppLog
+import io.legado.app.constant.SCRIPT_ENGINE
 import io.legado.app.data.entities.rule.RowUi
 import io.legado.app.data.entities.rule.RowUi
 import io.legado.app.help.CacheManager
 import io.legado.app.help.CacheManager
 import io.legado.app.help.JsExtensions
 import io.legado.app.help.JsExtensions
@@ -227,6 +228,6 @@ interface BaseSource : JsExtensions {
         bindings["baseUrl"] = getKey()
         bindings["baseUrl"] = getKey()
         bindings["cookie"] = CookieStore
         bindings["cookie"] = CookieStore
         bindings["cache"] = CacheManager
         bindings["cache"] = CacheManager
-        return AppConst.SCRIPT_ENGINE.eval(jsStr, bindings)
+        return SCRIPT_ENGINE.eval(jsStr, bindings)
     }
     }
 }
 }

+ 2 - 5
app/src/main/java/io/legado/app/help/book/BookExtensions.kt

@@ -4,10 +4,7 @@ package io.legado.app.help.book
 
 
 import android.net.Uri
 import android.net.Uri
 import com.script.SimpleBindings
 import com.script.SimpleBindings
-import io.legado.app.constant.AppConst
-import io.legado.app.constant.AppLog
-import io.legado.app.constant.BookSourceType
-import io.legado.app.constant.BookType
+import io.legado.app.constant.*
 import io.legado.app.data.appDb
 import io.legado.app.data.appDb
 import io.legado.app.data.entities.BaseBook
 import io.legado.app.data.entities.BaseBook
 import io.legado.app.data.entities.Book
 import io.legado.app.data.entities.Book
@@ -241,7 +238,7 @@ fun Book.getExportFileName(suffix: String): String {
     bindings["name"] = name
     bindings["name"] = name
     bindings["author"] = getRealAuthor()
     bindings["author"] = getRealAuthor()
     return kotlin.runCatching {
     return kotlin.runCatching {
-        AppConst.SCRIPT_ENGINE.eval(jsStr, bindings).toString() + "." + suffix
+        SCRIPT_ENGINE.eval(jsStr, bindings).toString() + "." + suffix
     }.onFailure {
     }.onFailure {
         AppLog.put("导出书名规则错误,使用默认规则\n${it.localizedMessage}", it)
         AppLog.put("导出书名规则错误,使用默认规则\n${it.localizedMessage}", it)
     }.getOrDefault("${name} 作者:${getRealAuthor()}.$suffix")
     }.getOrDefault("${name} 作者:${getRealAuthor()}.$suffix")

+ 1 - 1
app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt

@@ -3,8 +3,8 @@ package io.legado.app.model.analyzeRule
 import android.text.TextUtils
 import android.text.TextUtils
 import androidx.annotation.Keep
 import androidx.annotation.Keep
 import com.script.SimpleBindings
 import com.script.SimpleBindings
-import io.legado.app.constant.AppConst.SCRIPT_ENGINE
 import io.legado.app.constant.AppPattern.JS_PATTERN
 import io.legado.app.constant.AppPattern.JS_PATTERN
+import io.legado.app.constant.SCRIPT_ENGINE
 import io.legado.app.data.entities.*
 import io.legado.app.data.entities.*
 import io.legado.app.help.CacheManager
 import io.legado.app.help.CacheManager
 import io.legado.app.help.JsExtensions
 import io.legado.app.help.JsExtensions

+ 1 - 1
app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt

@@ -6,11 +6,11 @@ import androidx.annotation.Keep
 import cn.hutool.core.util.HexUtil
 import cn.hutool.core.util.HexUtil
 import com.bumptech.glide.load.model.GlideUrl
 import com.bumptech.glide.load.model.GlideUrl
 import com.script.SimpleBindings
 import com.script.SimpleBindings
-import io.legado.app.constant.AppConst.SCRIPT_ENGINE
 import io.legado.app.constant.AppConst.UA_NAME
 import io.legado.app.constant.AppConst.UA_NAME
 import io.legado.app.constant.AppPattern
 import io.legado.app.constant.AppPattern
 import io.legado.app.constant.AppPattern.JS_PATTERN
 import io.legado.app.constant.AppPattern.JS_PATTERN
 import io.legado.app.constant.AppPattern.dataUriRegex
 import io.legado.app.constant.AppPattern.dataUriRegex
+import io.legado.app.constant.SCRIPT_ENGINE
 import io.legado.app.data.entities.BaseSource
 import io.legado.app.data.entities.BaseSource
 import io.legado.app.data.entities.Book
 import io.legado.app.data.entities.Book
 import io.legado.app.data.entities.BookChapter
 import io.legado.app.data.entities.BookChapter

+ 2 - 5
app/src/main/java/io/legado/app/model/localBook/LocalBook.kt

@@ -5,10 +5,7 @@ import android.util.Base64
 import androidx.documentfile.provider.DocumentFile
 import androidx.documentfile.provider.DocumentFile
 import com.script.SimpleBindings
 import com.script.SimpleBindings
 import io.legado.app.R
 import io.legado.app.R
-import io.legado.app.constant.AppConst
-import io.legado.app.constant.AppPattern
-import io.legado.app.constant.AppLog
-import io.legado.app.constant.BookType
+import io.legado.app.constant.*
 import io.legado.app.data.appDb
 import io.legado.app.data.appDb
 import io.legado.app.data.entities.BaseSource
 import io.legado.app.data.entities.BaseSource
 import io.legado.app.data.entities.Book
 import io.legado.app.data.entities.Book
@@ -269,7 +266,7 @@ object LocalBook {
         if (!AppConfig.bookImportFileName.isNullOrBlank()) {
         if (!AppConfig.bookImportFileName.isNullOrBlank()) {
             try {
             try {
                 //在脚本中定义如何分解文件名成书名、作者名
                 //在脚本中定义如何分解文件名成书名、作者名
-                val jsonStr = AppConst.SCRIPT_ENGINE.eval(
+                val jsonStr = SCRIPT_ENGINE.eval(
                     //在用户脚本后添加捕获author、name的代码,只要脚本中author、name有值就会被捕获
                     //在用户脚本后添加捕获author、name的代码,只要脚本中author、name有值就会被捕获
                     AppConfig.bookImportFileName + "\nJSON.stringify({author:author,name:name})",
                     AppConfig.bookImportFileName + "\nJSON.stringify({author:author,name:name})",
                     //将文件名注入到脚本的src变量中
                     //将文件名注入到脚本的src变量中

+ 1 - 1
app/src/main/java/io/legado/app/utils/JsUtils.kt

@@ -1,8 +1,8 @@
 package io.legado.app.utils
 package io.legado.app.utils
 
 
 import com.script.SimpleBindings
 import com.script.SimpleBindings
-import io.legado.app.constant.AppConst.SCRIPT_ENGINE
 import io.legado.app.constant.AppPattern.EXP_PATTERN
 import io.legado.app.constant.AppPattern.EXP_PATTERN
+import io.legado.app.constant.SCRIPT_ENGINE
 
 
 object JsUtils {
 object JsUtils {
 
 

+ 2 - 2
app/src/main/java/io/legado/app/utils/RegexExtensions.kt

@@ -2,7 +2,7 @@ package io.legado.app.utils
 
 
 import androidx.core.os.postDelayed
 import androidx.core.os.postDelayed
 import com.script.SimpleBindings
 import com.script.SimpleBindings
-import io.legado.app.constant.AppConst
+import io.legado.app.constant.SCRIPT_ENGINE
 import io.legado.app.exception.RegexTimeoutException
 import io.legado.app.exception.RegexTimeoutException
 import io.legado.app.help.CrashHandler
 import io.legado.app.help.CrashHandler
 import io.legado.app.help.coroutine.Coroutine
 import io.legado.app.help.coroutine.Coroutine
@@ -33,7 +33,7 @@ fun CharSequence.replace(regex: Regex, replacement: String, timeout: Long): Stri
                             val bindings = SimpleBindings()
                             val bindings = SimpleBindings()
                             bindings["result"] = matcher.group()
                             bindings["result"] = matcher.group()
                             val jsResult =
                             val jsResult =
-                                AppConst.SCRIPT_ENGINE.eval(replacement1, bindings).toString()
+                                SCRIPT_ENGINE.eval(replacement1, bindings).toString()
                             matcher.appendReplacement(stringBuffer, jsResult)
                             matcher.appendReplacement(stringBuffer, jsResult)
                         } else {
                         } else {
                             matcher.appendReplacement(stringBuffer, replacement1)
                             matcher.appendReplacement(stringBuffer, replacement1)

+ 2 - 3
app/src/test/java/io/legado/app/ExampleUnitTest.kt

@@ -1,7 +1,7 @@
 package io.legado.app
 package io.legado.app
 
 
 import com.script.SimpleBindings
 import com.script.SimpleBindings
-import com.script.rhino.RhinoScriptEngine
+import io.legado.app.constant.SCRIPT_ENGINE
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertEquals
 import org.junit.Test
 import org.junit.Test
 
 
@@ -19,13 +19,12 @@ class ExampleUnitTest {
 
 
     @Test
     @Test
     fun jsTest() {
     fun jsTest() {
-        val scriptEngine = RhinoScriptEngine()
         val map = hashMapOf("id" to "3242532321")
         val map = hashMapOf("id" to "3242532321")
         map["id"] = "12314123"
         map["id"] = "12314123"
         val bindings = SimpleBindings()
         val bindings = SimpleBindings()
         bindings["result"] = map
         bindings["result"] = map
         val js = "$=result;id=$.id;id"
         val js = "$=result;id=$.id;id"
-        val result = scriptEngine.eval(js, bindings)?.toString()
+        val result = SCRIPT_ENGINE.eval(js, bindings)?.toString()
         assertEquals("12314123", result)
         assertEquals("12314123", result)
     }
     }