From 18008acc141a55449b28c1af487a080c4bbcb355 Mon Sep 17 00:00:00 2001 From: bptato Date: Sat, 21 Oct 2023 23:34:56 +0200 Subject: base64: reduce pointless re-coding using JSString We now expose some functions from QuickJS to interact with JavaScript strings without re-encoding them into UTF-8. --- src/js/fromjs.nim | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/js/fromjs.nim') diff --git a/src/js/fromjs.nim b/src/js/fromjs.nim index b2e1cc91..80fdc1cd 100644 --- a/src/js/fromjs.nim +++ b/src/js/fromjs.nim @@ -54,6 +54,9 @@ func fromJSString(ctx: JSContext, val: JSValue): JSResult[string] = JS_FreeCString(ctx, outp) return ok(ret) +func fromJSString2(ctx: JSContext, val: JSValue): JSResult[JSString] = + return ok(JS_VALUE_GET_STRING(val)) + func fromJSInt[T: SomeInteger](ctx: JSContext, val: JSValue): JSResult[T] = if not JS_IsNumber(val): @@ -449,6 +452,8 @@ type FromJSAllowedT = (object and not (Result|Option|Table|JSValue|JSDict)) proc fromJS*[T](ctx: JSContext, val: JSValue): JSResult[T] = when T is string: return fromJSString(ctx, val) + elif T is JSString: + return fromJSString2(ctx, val) elif T is char: return fromJSChar(ctx, val) elif T is Rune: -- cgit 1.4.1-2-gfad0