diff --git a/.gitignore b/.gitignore index 68102cad..d9d242a1 100644 --- a/.gitignore +++ b/.gitignore @@ -12,7 +12,6 @@ output.json output-metadata.json desktop.ini -sync.ffs_db .bak/ .git/ diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/Images.java b/app/src/main/java/org/autojs/autojs/runtime/api/Images.java index c33b99a2..139f5640 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/Images.java +++ b/app/src/main/java/org/autojs/autojs/runtime/api/Images.java @@ -1,6 +1,5 @@ package org.autojs.autojs.runtime.api; -import org.autojs.autojs.extension.AnyExtensions; import android.app.Activity; import android.content.Context; import android.content.Intent; @@ -24,8 +23,8 @@ import org.autojs.autojs.annotation.ScriptVariable; import org.autojs.autojs.concurrent.VolatileDispose; import org.autojs.autojs.core.image.CapturedImage; import org.autojs.autojs.core.image.ImageWrapper; -import org.autojs.autojs.core.image.Shootable; import org.autojs.autojs.core.image.RhinoColorFinder; +import org.autojs.autojs.core.image.Shootable; import org.autojs.autojs.core.image.TemplateMatching; import org.autojs.autojs.core.image.capture.ScreenCaptureRequester; import org.autojs.autojs.core.image.capture.ScreenCapturer; @@ -34,6 +33,7 @@ import org.autojs.autojs.core.opencv.Mat; import org.autojs.autojs.core.opencv.OpenCVHelper; import org.autojs.autojs.core.pref.Language; import org.autojs.autojs.core.ui.inflater.util.Drawables; +import org.autojs.autojs.extension.AnyExtensions; import org.autojs.autojs.pio.UncheckedIOException; import org.autojs.autojs.runtime.ScriptRuntime; import org.autojs.autojs.runtime.api.ImageFeatureMatching.FeatureMatchingDescriptor; diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Inspect.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Inspect.kt index 5f26382a..ea7c3c04 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Inspect.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Inspect.kt @@ -342,7 +342,7 @@ object Inspect : Augmentable(), Invokable { if (value is NativeJavaPackage) return value.toString() if (value is NativeJavaClass) return value.toString() if (value.javaClass.isArray) return javaArrayToString(value) - if (value !is ScriptableObject) return formatValue(ctx, Context.toString(value), recurseTimes) + if (value !is ScriptableObject) return Context.toString(value) if (value is ProxyObject) return formatValue(ctx, value[AUGMENTED_OBJECT_KEY], recurseTimes) // @Hint by SuperMonster003 on Apr 16, 2024. diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Util.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Util.kt index a6f8cb76..9c41258e 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Util.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/util/Util.kt @@ -36,6 +36,7 @@ import org.autojs.autojs.util.RhinoUtils.ObsoletedRhinoFunctionException import org.autojs.autojs.util.RhinoUtils.callToStringFunction import org.autojs.autojs.util.RhinoUtils.coerceFloatNumber import org.autojs.autojs.util.RhinoUtils.coerceNumber +import org.autojs.autojs.util.RhinoUtils.coerceString import org.autojs.autojs.util.RhinoUtils.js_function_bind import org.autojs.autojs.util.RhinoUtils.js_json_stringify import org.autojs.autojs.util.RhinoUtils.js_object_create @@ -349,13 +350,13 @@ object Util : Augmentable() { if (args.isEmpty()) return "" val first = args[0] - if (first !is String) { + if (!first.isJsString()) { return args.joinToString(" ") { inspectRhino(it) } } val argsSize = args.size var index = 1 - val fmt = first + val fmt = coerceString(first) val len = fmt.length // Estimate some margin to reduce expansion. // zh-CN: 预估一些余量, 减少扩容. @@ -421,7 +422,9 @@ object Util : Augmentable() { } } - val formatted = inspectRhino(sb.toString()) + // Do NOT inspect the formatted string, otherwise control characters like '\n' will be escaped. + // zh-CN: 不要对格式化结果做 inspect, 否则诸如 '\n' 的控制字符会被转义. + val formatted = sb.toString() return when { index >= argsSize -> formatted @@ -430,14 +433,17 @@ object Util : Augmentable() { // zh-CN: 追加剩余参数, 以空格分隔. val out = StringBuilder(formatted.length + 1 + (argsSize - index) * 8) out.append(formatted) - out.append(' ') - // Append the first one first, then add spaces for the rest to avoid checking leading spaces in the loop. - // zh-CN: 为避免在循环中判断前导空格, 这里先追加第一个, 再对剩余的加空格. - out.append(inspectRhino(args[index++])) + while (index < argsSize) { + val x = args[index++] out.append(' ') - out.append(inspectRhino(args[index++])) + if (x == null || !x.isJsObject()) { + out.append(Context.toString(x)) + } else { + out.append(inspectRhino(x)) + } } + out.toString() } } diff --git a/app/src/main/res/layout/fragment_drawer.xml b/app/src/main/res/layout/fragment_drawer.xml index f23629ca..f979982a 100644 --- a/app/src/main/res/layout/fragment_drawer.xml +++ b/app/src/main/res/layout/fragment_drawer.xml @@ -22,13 +22,13 @@ + + +