lively.lang
Version:
JavaScript utils providing useful abstractions for working with collections, functions, objects.
105 lines (93 loc) • 2.16 kB
JavaScript
function all(object, predicate) {
// ignore-in-doc
var a = [];
for (var name in object) {
if ((object.__lookupGetter__(name) || typeof object[name] !== 'function')
&& (predicate ? predicate(name, object) : true))
a.push(name);
}
return a;
}
function allOwnPropertiesOrFunctions(obj, predicate) {
// ignore-in-doc
return Object.getOwnPropertyNames(obj).reduce(function(result, name) {
if (predicate ? predicate(obj, name) : true) result.push(name);
return result;
}, []);
}
function own(object) {
// ignore-in-doc
var a = [];
for (var name in object) {
if (object.hasOwnProperty(name) && (object.__lookupGetter__(name)
|| object[name] !== 'function'))
a.push(name);
}
return a;
}
function forEachOwn(object, func, context) {
// ignore-in-doc
var result = [];
for (var name in object) {
if (!object.hasOwnProperty(name)) continue;
var value = object[name];
if (value !== 'function') {
result.push(func.call(context || this, name, value));
}
}
return result;
}
function nameFor(object, value) {
// ignore-in-doc
for (var name in object)
if (object[name] === value)
return name;
return undefined;
}
function values(obj) {
// ignore-in-doc
var values = [];
for (var name in obj)
values.push(obj[name]);
return values;
}
function ownValues(obj) {
// ignore-in-doc
var values = [];
for (var name in obj)
if (obj.hasOwnProperty(name))
values.push(obj[name]);
return values;
}
function any(obj, predicate) {
// ignore-in-doc
for (var name in obj)
if (predicate(obj, name))
return true;
return false;
}
function allProperties(obj, predicate) {
// ignore-in-doc
var result = [];
for (var name in obj)
if (predicate ? predicate(obj, name) : true)
result.push(name);
return result;
}
function hash(obj) {
// ignore-in-doc
// Using the property names of `obj` to generate a hash value.
return Object.keys(obj).sort().join('').hashCode();
}
export {
all,
allOwnPropertiesOrFunctions,
own,
forEachOwn,
nameFor,
values,
ownValues,
any,
allProperties,
hash,
}