diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index 3043abeed..343dc63eb 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -14,7 +14,6 @@ **2023/03/24** * 更新cronet: 111.0.5563.115 -* 更新到 rhino-1.7.14.1 * 修复bug * 其中一些更新由 Xwite, Horis提供 diff --git a/app/src/main/java/io/legado/app/constant/AppConst.kt b/app/src/main/java/io/legado/app/constant/AppConst.kt index c66c168f9..0bd287146 100644 --- a/app/src/main/java/io/legado/app/constant/AppConst.kt +++ b/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.provider.Settings import androidx.annotation.Keep -import com.script.rhino.RhinoScriptEngine - import io.legado.app.BuildConfig import io.legado.app.utils.channel import splitties.init.appCtx @@ -28,10 +26,6 @@ object AppConst { const val DEFAULT_WEBDAV_ID = -1L - val SCRIPT_ENGINE: RhinoScriptEngine by lazy { - RhinoScriptEngine() - } - val timeFormat: SimpleDateFormat by lazy { SimpleDateFormat("HH:mm") } diff --git a/app/src/main/java/io/legado/app/constant/ScriptEngine.kt b/app/src/main/java/io/legado/app/constant/ScriptEngine.kt new file mode 100644 index 000000000..ee37d2e3f --- /dev/null +++ b/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() +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/data/entities/BaseSource.kt b/app/src/main/java/io/legado/app/data/entities/BaseSource.kt index 037735a36..5059ed926 100644 --- a/app/src/main/java/io/legado/app/data/entities/BaseSource.kt +++ b/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 io.legado.app.constant.AppConst 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.help.CacheManager import io.legado.app.help.JsExtensions @@ -227,6 +228,6 @@ interface BaseSource : JsExtensions { bindings["baseUrl"] = getKey() bindings["cookie"] = CookieStore bindings["cache"] = CacheManager - return AppConst.SCRIPT_ENGINE.eval(jsStr, bindings) + return SCRIPT_ENGINE.eval(jsStr, bindings) } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/help/book/BookExtensions.kt b/app/src/main/java/io/legado/app/help/book/BookExtensions.kt index bb8a10a5a..1c4710eb1 100644 --- a/app/src/main/java/io/legado/app/help/book/BookExtensions.kt +++ b/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 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.entities.BaseBook import io.legado.app.data.entities.Book @@ -241,7 +238,7 @@ fun Book.getExportFileName(suffix: String): String { bindings["name"] = name bindings["author"] = getRealAuthor() return kotlin.runCatching { - AppConst.SCRIPT_ENGINE.eval(jsStr, bindings).toString() + "." + suffix + SCRIPT_ENGINE.eval(jsStr, bindings).toString() + "." + suffix }.onFailure { AppLog.put("导出书名规则错误,使用默认规则\n${it.localizedMessage}", it) }.getOrDefault("${name} 作者:${getRealAuthor()}.$suffix") diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt index 6e64839f3..1448e8e57 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt +++ b/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 androidx.annotation.Keep 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.SCRIPT_ENGINE import io.legado.app.data.entities.* import io.legado.app.help.CacheManager import io.legado.app.help.JsExtensions diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt index 889cd424d..a0f3a4c40 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt +++ b/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 com.bumptech.glide.load.model.GlideUrl 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.AppPattern import io.legado.app.constant.AppPattern.JS_PATTERN 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.Book import io.legado.app.data.entities.BookChapter diff --git a/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt b/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt index 69759c70b..ef692a49e 100644 --- a/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt +++ b/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 com.script.SimpleBindings 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.entities.BaseSource import io.legado.app.data.entities.Book @@ -269,7 +266,7 @@ object LocalBook { if (!AppConfig.bookImportFileName.isNullOrBlank()) { try { //在脚本中定义如何分解文件名成书名、作者名 - val jsonStr = AppConst.SCRIPT_ENGINE.eval( + val jsonStr = SCRIPT_ENGINE.eval( //在用户脚本后添加捕获author、name的代码,只要脚本中author、name有值就会被捕获 AppConfig.bookImportFileName + "\nJSON.stringify({author:author,name:name})", //将文件名注入到脚本的src变量中 diff --git a/app/src/main/java/io/legado/app/utils/JsUtils.kt b/app/src/main/java/io/legado/app/utils/JsUtils.kt index 0e9674495..a9c85cc5c 100644 --- a/app/src/main/java/io/legado/app/utils/JsUtils.kt +++ b/app/src/main/java/io/legado/app/utils/JsUtils.kt @@ -1,8 +1,8 @@ package io.legado.app.utils 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.SCRIPT_ENGINE object JsUtils { diff --git a/app/src/main/java/io/legado/app/utils/RegexExtensions.kt b/app/src/main/java/io/legado/app/utils/RegexExtensions.kt index 958930b84..247009117 100644 --- a/app/src/main/java/io/legado/app/utils/RegexExtensions.kt +++ b/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 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.help.CrashHandler import io.legado.app.help.coroutine.Coroutine @@ -33,7 +33,7 @@ fun CharSequence.replace(regex: Regex, replacement: String, timeout: Long): Stri val bindings = SimpleBindings() bindings["result"] = matcher.group() val jsResult = - AppConst.SCRIPT_ENGINE.eval(replacement1, bindings).toString() + SCRIPT_ENGINE.eval(replacement1, bindings).toString() matcher.appendReplacement(stringBuffer, jsResult) } else { matcher.appendReplacement(stringBuffer, replacement1) diff --git a/app/src/test/java/io/legado/app/ExampleUnitTest.kt b/app/src/test/java/io/legado/app/ExampleUnitTest.kt index 97c6a9f0d..9ebed7aec 100644 --- a/app/src/test/java/io/legado/app/ExampleUnitTest.kt +++ b/app/src/test/java/io/legado/app/ExampleUnitTest.kt @@ -1,7 +1,7 @@ package io.legado.app import com.script.SimpleBindings -import com.script.rhino.RhinoScriptEngine +import io.legado.app.constant.SCRIPT_ENGINE import org.junit.Assert.assertEquals import org.junit.Test @@ -19,13 +19,12 @@ class ExampleUnitTest { @Test fun jsTest() { - val scriptEngine = RhinoScriptEngine() val map = hashMapOf("id" to "3242532321") map["id"] = "12314123" val bindings = SimpleBindings() bindings["result"] = map val js = "$=result;id=$.id;id" - val result = scriptEngine.eval(js, bindings)?.toString() + val result = SCRIPT_ENGINE.eval(js, bindings)?.toString() assertEquals("12314123", result) }