summaryrefslogtreecommitdiff
path: root/content/handlers/javascript/duktape
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2020-02-21 18:40:16 +0000
committerDaniel Silverstone <dsilvers@digital-scurf.org>2020-02-21 18:40:16 +0000
commitb23063bb5200bb1fc6a64e9e811ab1191d114fd9 (patch)
tree5d4ca12fcc7b32d788d86ae0327e0eb6e73351cf /content/handlers/javascript/duktape
parent2325062ff1429ab9a19ff2db251fa13b0799a276 (diff)
downloadnetsurf-b23063bb5200bb1fc6a64e9e811ab1191d114fd9.tar.gz
netsurf-b23063bb5200bb1fc6a64e9e811ab1191d114fd9.tar.bz2
JS Generics: Add a NodeMap proxy builder
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
Diffstat (limited to 'content/handlers/javascript/duktape')
-rw-r--r--content/handlers/javascript/duktape/generics.js23
1 files changed, 23 insertions, 0 deletions
diff --git a/content/handlers/javascript/duktape/generics.js b/content/handlers/javascript/duktape/generics.js
index 29beffc2c..e6e952a46 100644
--- a/content/handlers/javascript/duktape/generics.js
+++ b/content/handlers/javascript/duktape/generics.js
@@ -27,6 +27,29 @@ var NetSurf = {
},
});
},
+ /* The make-proxy call for nodemap-type objects */
+ makeNodeMapProxy: function(inner) {
+ return new Proxy(inner, {
+ has: function(target, key) {
+ if (typeof key == 'number') {
+ return (key >= 0) && (key < target.length);
+ } else {
+ return target.getNamedItem(key) || (key in target);
+ }
+ },
+ get: function(target, key) {
+ if (typeof key == 'number') {
+ return target.item(key);
+ } else {
+ var attr = target.getNamedItem(key);
+ if (attr) {
+ return attr;
+ }
+ return target[key];
+ }
+ },
+ });
+ },
consoleFormatter: function Formatter() {
if (arguments.length == 0) {