summaryrefslogtreecommitdiff
path: root/content/handlers/javascript/duktape/generics.js
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2019-05-04 23:06:14 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2019-05-04 23:06:20 +0100
commit6dfc0f1486e50ff6a3bb74164cc5e0af6b012deb (patch)
treeee2ef12f492262dcb427921843b15a8eca63f298 /content/handlers/javascript/duktape/generics.js
parent38a65c0242ca7b32aa74537ab72d52510a9a32c8 (diff)
downloadnetsurf-6dfc0f1486e50ff6a3bb74164cc5e0af6b012deb.tar.gz
netsurf-6dfc0f1486e50ff6a3bb74164cc5e0af6b012deb.tar.bz2
Support nodelist indexing
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
Diffstat (limited to 'content/handlers/javascript/duktape/generics.js')
-rw-r--r--content/handlers/javascript/duktape/generics.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/content/handlers/javascript/duktape/generics.js b/content/handlers/javascript/duktape/generics.js
new file mode 100644
index 000000000..ee5e8013b
--- /dev/null
+++ b/content/handlers/javascript/duktape/generics.js
@@ -0,0 +1,30 @@
+/*
+ * Generics for Duktape binding in NetSurf
+ *
+ * The result of this *MUST* be setting a NetSurf object only.
+ *
+ * That object will then be absorbed into the global object as a hidden
+ * object which is used by the rest of the bindings.
+ */
+
+var NetSurf = {
+ /* The make-proxy call for list-type objects */
+ makeListProxy: function(inner) {
+ return new Proxy(inner, {
+ has: function(target, key) {
+ if (typeof key == 'number') {
+ return (key >= 0) && (key < target.length);
+ } else {
+ return key in target;
+ }
+ },
+ get: function(target, key) {
+ if (typeof key == 'number') {
+ return target.item(key);
+ } else {
+ return target[key];
+ }
+ },
+ });
+ },
+};