1
0
Fork 0

small optimizations

This commit is contained in:
Jan Steemann 2014-05-17 01:38:39 +02:00
parent e9c4a759f7
commit e532223fcd
1 changed files with 66 additions and 86 deletions

View File

@ -271,7 +271,7 @@ function CLONE (obj) {
return obj; return obj;
} }
var copy, a; var copy;
if (Array.isArray(obj)) { if (Array.isArray(obj)) {
copy = [ ]; copy = [ ];
obj.forEach(function (i) { obj.forEach(function (i) {
@ -280,11 +280,9 @@ function CLONE (obj) {
} }
else if (obj instanceof Object) { else if (obj instanceof Object) {
copy = { }; copy = { };
for (a in obj) { Object.keys(obj).forEach(function(k) {
if (obj.hasOwnProperty(a)) { copy[k] = CLONE(obj[k]);
copy[a] = CLONE(obj[a]); });
}
}
} }
return copy; return copy;
@ -323,14 +321,12 @@ function FIX_VALUE (value) {
if (type === 'object') { if (type === 'object') {
var result = { }; var result = { };
for (i in value) {
if (value.hasOwnProperty(i)) { Object.keys(value).forEach(function(k) {
if (typeof value[i] === 'function') { if (typeof value[k] !== 'function') {
continue; result[k] = FIX_VALUE(value[k]);
}
result[i] = FIX_VALUE(value[i]);
} }
} });
return result; return result;
} }
@ -520,13 +516,11 @@ function FIX (value) {
function VALUES (value) { function VALUES (value) {
"use strict"; "use strict";
var values = [ ], a; var values = [ ];
for (a in value) { Object.keys(value).forEach(function(k) {
if (value.hasOwnProperty(a)) { values.push(value[k]);
values.push(value[a]); });
}
}
return values; return values;
} }
@ -993,7 +987,7 @@ function GET_DOCUMENTS_EDGE (collection, att, id) {
function GET_DOCUMENTS_EDGE_LIST (collection, att, values) { function GET_DOCUMENTS_EDGE_LIST (collection, att, values) {
"use strict"; "use strict";
var docs = { }, result = [ ], c, a; var docs = { }, result = [ ], c;
c = COLLECTION(collection); c = COLLECTION(collection);
@ -1015,11 +1009,9 @@ function GET_DOCUMENTS_EDGE_LIST (collection, att, values) {
} }
}); });
for (a in docs) { Object.keys(docs).forEach(function(k) {
if (docs.hasOwnProperty(a)) { result.push(docs[k]);
result.push(docs[a]); });
}
}
return result; return result;
} }
@ -2703,7 +2695,7 @@ function UNIQUE (values) {
LIST(values); LIST(values);
var keys = { }, result = [ ], a; var keys = { }, result = [ ];
values.forEach(function (value) { values.forEach(function (value) {
var normalized = NORMALIZE(value); var normalized = NORMALIZE(value);
@ -2714,11 +2706,9 @@ function UNIQUE (values) {
} }
}); });
for (a in keys) { Object.keys(keys).forEach(function(k) {
if (keys.hasOwnProperty(a)) { result.push(keys[k]);
result.push(keys[a]); });
}
}
return result; return result;
} }
@ -2782,11 +2772,9 @@ function UNION_DISTINCT () {
} }
var result = [ ]; var result = [ ];
for (i in keys) { Object.keys(keys).forEach(function(k) {
if (keys.hasOwnProperty(i)) { result.push(keys[k]);
result.push(keys[i]); });
}
}
return result; return result;
} }
@ -2860,11 +2848,9 @@ function MINUS () {
} }
var result = [ ]; var result = [ ];
for (i in keys) { Object.keys(keys).forEach(function(k) {
if (keys.hasOwnProperty(i)) { result.push(keys[k]);
result.push(keys[i]); });
}
}
return result; return result;
} }
@ -2912,11 +2898,9 @@ function INTERSECTION () {
} }
} }
for (i in keys) { Object.keys(keys).forEach(function(k) {
if (keys.hasOwnProperty(i)) { result.push(keys[k]);
result.push(keys[i]); });
}
}
return result; return result;
} }
@ -3495,15 +3479,13 @@ function ATTRIBUTES (element, removeInternal, sort) {
} }
if (removeInternal) { if (removeInternal) {
var a, result = [ ]; var result = [ ];
for (a in element) { Object.keys(element).forEach(function(k) {
if (element.hasOwnProperty(a)) { if (k.substring(0, 1) !== '_') {
if (a.substring(0, 1) !== '_') { result.push(k);
result.push(a);
}
} }
} });
if (sort) { if (sort) {
result.sort(); result.sort();
@ -3526,15 +3508,14 @@ function UNSET (value) {
THROW(INTERNAL.errors.ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH, "UNSET"); THROW(INTERNAL.errors.ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH, "UNSET");
} }
var result = { }, keys = EXTRACT_KEYS(arguments, 1, "UNSET"), i; var result = { }, keys = EXTRACT_KEYS(arguments, 1, "UNSET");
// copy over all that is left // copy over all that is left
for (i in value) {
if (value.hasOwnProperty(i)) { Object.keys(value).forEach(function(k) {
if (keys[i] !== true) { if (keys[k] !== true) {
result[i] = CLONE(value[i]); result[k] = CLONE(value[k]);
}
} }
} });
return result; return result;
} }
@ -3550,17 +3531,14 @@ function KEEP (value) {
THROW(INTERNAL.errors.ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH, "KEEP"); THROW(INTERNAL.errors.ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH, "KEEP");
} }
var keys = EXTRACT_KEYS(arguments, 1, "KEEP"), i; var result = { }, keys = EXTRACT_KEYS(arguments, 1, "KEEP");
// copy over all that is left // copy over all that is left
var result = { }; Object.keys(keys).forEach(function(k) {
for (i in keys) { if (value.hasOwnProperty(k)) {
if (keys.hasOwnProperty(i)) { result[k] = CLONE(value[k]);
if (value.hasOwnProperty(i)) {
result[i] = CLONE(value[i]);
}
} }
} });
return result; return result;
} }
@ -3572,7 +3550,13 @@ function KEEP (value) {
function MERGE () { function MERGE () {
"use strict"; "use strict";
var result = { }, i, a; var result = { }, i;
var add = function (element) {
Object.keys(element).forEach(function(k) {
result[k] = element[k];
});
};
for (i in arguments) { for (i in arguments) {
if (arguments.hasOwnProperty(i)) { if (arguments.hasOwnProperty(i)) {
@ -3582,11 +3566,8 @@ function MERGE () {
THROW(INTERNAL.errors.ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH, "MERGE"); THROW(INTERNAL.errors.ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH, "MERGE");
} }
for (a in element) { add(element);
if (element.hasOwnProperty(a)) {
result[a] = element[a];
}
}
} }
} }
@ -3603,18 +3584,17 @@ function MERGE_RECURSIVE () {
var result = { }, i, recurse; var result = { }, i, recurse;
recurse = function (old, element) { recurse = function (old, element) {
var r = CLONE(old), a; var r = CLONE(old);
for (a in element) { Object.keys(element).forEach(function(k) {
if (element.hasOwnProperty(a)) { if (r.hasOwnProperty(k) && TYPEWEIGHT(element[k]) === TYPEWEIGHT_DOCUMENT) {
if (r.hasOwnProperty(a) && TYPEWEIGHT(element[a]) === TYPEWEIGHT_DOCUMENT) { r[k] = recurse(r[k], element[k]);
r[a] = recurse(r[a], element[a]);
}
else {
r[a] = element[a];
}
} }
} else {
r[k] = element[k];
}
});
return r; return r;
}; };