@@ -68,44 +68,38 @@ EMSCRIPTEN_BINDINGS(libOpenCOR)
6868 }
6969 });
7070
71- prototype[Symbol.iterator ] = function () {
72- let i = 0 ;
71+ prototype[Symbol.iterator ] = function*() {
7372 let n = this .size ();
74- let iterator = {};
7573
76- iterator.next = () => {
77- let result = {};
78-
79- if (i < n) {
80- result.value = this .get (i++);
81- result.done = false ;
82- } else {
83- result.value = undefined;
84- result.done = true ;
85- }
86-
87- return result;
88- };
89-
90- return iterator;
74+ for (let i = 0 ; i < n; ++i) {
75+ yield this .get (i);
76+ }
9177 };
9278
9379 Object.setPrototypeOf (prototype, new Proxy (Object.getPrototypeOf (prototype), {
94- get: (target, prop, receiver) => {
95- if (typeof prop === ' string' && /^[0 -9 ]+$/.test (prop)) {
96- return receiver.get (parseInt (prop));
80+ get: (target, property, receiver) => {
81+ if (typeof property === ' string' ) {
82+ let number = property >>> 0 ;
83+
84+ if (String (number) === property) {
85+ return receiver.get (number);
86+ }
9787 }
9888
99- return Reflect.get (target, prop , receiver);
89+ return Reflect.get (target, property , receiver);
10090 },
101- set: (target, prop, value, receiver) => {
102- if (typeof prop === ' string' && /^[0 -9 ]+$/.test (prop)) {
103- receiver.set (parseInt (prop), value);
91+ set: (target, property, value, receiver) => {
92+ if (typeof property === ' string' ) {
93+ let number = property >>> 0 ;
94+
95+ if (String (number) === property) {
96+ receiver.set (number, value);
10497
105- return true ;
98+ return true ;
99+ }
106100 }
107101
108- return Reflect.set (target, prop , value, receiver);
102+ return Reflect.set (target, property , value, receiver);
109103 }
110104 }));
111105 });
0 commit comments