From 822f137cf2a35ad68e1e7496e82a0502821da533 Mon Sep 17 00:00:00 2001 From: "Paul m. p. Peny" Date: Sat, 26 Jul 2025 04:00:22 +0200 Subject: [PATCH] add truth test --- browsermodule.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/browsermodule.c b/browsermodule.c index 769e046..84c4cbc 100644 --- a/browsermodule.c +++ b/browsermodule.c @@ -331,8 +331,7 @@ Object_str(Object *self) { /** * Implements len(). */ -static Py_ssize_t -Object_length(Object *self) { +static int get_len(Object *self) { int len = EM_ASM_INT({ var val = Emval.toValue($0); if (val[Symbol.iterator] && val.length !== undefined) { @@ -342,7 +341,12 @@ Object_length(Object *self) { return -1; } }, self->handle); + return len; +} +static Py_ssize_t +Object_length(Object *self) { + int len = get_len(self); if (len >= 0) { return len; } @@ -517,6 +521,18 @@ Object_dir(Object *self, PyObject *noarg) { }, self->handle)); } +/** + * Implements truth test. + */ +static int +Object_as_bool(PyObject *self) { + return (int)(get_len((Object*)self) != 0 ); +} + +static PyNumberMethods Object_as_number = { + .nb_bool = Object_as_bool, +}; + static PyAsyncMethods Object_async = { .am_await = (unaryfunc)Object_await, }; @@ -551,6 +567,7 @@ static PyTypeObject Object_Type = { .tp_iter = (getiterfunc)Object_iter, .tp_iternext = (iternextfunc)Object_next, .tp_methods = Object_methods, + .tp_as_number = &Object_as_number, .tp_new = PyType_GenericNew, };