first commit
This commit is contained in:
158
app_vue/node_modules/utila/lib/object.js
generated
vendored
Normal file
158
app_vue/node_modules/utila/lib/object.js
generated
vendored
Normal file
@ -0,0 +1,158 @@
|
||||
// Generated by CoffeeScript 1.6.3
|
||||
var object, _common,
|
||||
__hasProp = {}.hasOwnProperty;
|
||||
|
||||
_common = require('./_common');
|
||||
|
||||
module.exports = object = {
|
||||
isBareObject: _common.isBareObject.bind(_common),
|
||||
/*
|
||||
if object is an instance of a class
|
||||
*/
|
||||
|
||||
isInstance: function(what) {
|
||||
return !this.isBareObject(what);
|
||||
},
|
||||
/*
|
||||
Alias to _common.typeOf
|
||||
*/
|
||||
|
||||
typeOf: _common.typeOf.bind(_common),
|
||||
/*
|
||||
Alias to _common.clone
|
||||
*/
|
||||
|
||||
clone: _common.clone.bind(_common),
|
||||
/*
|
||||
Empties an object of its properties.
|
||||
*/
|
||||
|
||||
empty: function(o) {
|
||||
var prop;
|
||||
for (prop in o) {
|
||||
if (o.hasOwnProperty(prop)) {
|
||||
delete o[prop];
|
||||
}
|
||||
}
|
||||
return o;
|
||||
},
|
||||
/*
|
||||
Empties an object. Doesn't check for hasOwnProperty, so it's a tiny
|
||||
bit faster. Use it for plain objects.
|
||||
*/
|
||||
|
||||
fastEmpty: function(o) {
|
||||
var property;
|
||||
for (property in o) {
|
||||
delete o[property];
|
||||
}
|
||||
return o;
|
||||
},
|
||||
/*
|
||||
Overrides values fomr `newValues` on `base`, as long as they
|
||||
already exist in base.
|
||||
*/
|
||||
|
||||
overrideOnto: function(base, newValues) {
|
||||
var key, newVal, oldVal;
|
||||
if (!this.isBareObject(newValues) || !this.isBareObject(base)) {
|
||||
return base;
|
||||
}
|
||||
for (key in base) {
|
||||
oldVal = base[key];
|
||||
newVal = newValues[key];
|
||||
if (newVal === void 0) {
|
||||
continue;
|
||||
}
|
||||
if (typeof newVal !== 'object' || this.isInstance(newVal)) {
|
||||
base[key] = this.clone(newVal);
|
||||
} else {
|
||||
if (typeof oldVal !== 'object' || this.isInstance(oldVal)) {
|
||||
base[key] = this.clone(newVal);
|
||||
} else {
|
||||
this.overrideOnto(oldVal, newVal);
|
||||
}
|
||||
}
|
||||
}
|
||||
return base;
|
||||
},
|
||||
/*
|
||||
Takes a clone of 'base' and runs #overrideOnto on it
|
||||
*/
|
||||
|
||||
override: function(base, newValues) {
|
||||
return this.overrideOnto(this.clone(base), newValues);
|
||||
},
|
||||
append: function(base, toAppend) {
|
||||
return this.appendOnto(this.clone(base), toAppend);
|
||||
},
|
||||
appendOnto: function(base, toAppend) {
|
||||
var key, newVal, oldVal;
|
||||
if (!this.isBareObject(toAppend) || !this.isBareObject(base)) {
|
||||
return base;
|
||||
}
|
||||
for (key in toAppend) {
|
||||
if (!__hasProp.call(toAppend, key)) continue;
|
||||
newVal = toAppend[key];
|
||||
if (newVal === void 0) {
|
||||
continue;
|
||||
}
|
||||
if (typeof newVal !== 'object' || this.isInstance(newVal)) {
|
||||
base[key] = newVal;
|
||||
} else {
|
||||
oldVal = base[key];
|
||||
if (typeof oldVal !== 'object' || this.isInstance(oldVal)) {
|
||||
base[key] = this.clone(newVal);
|
||||
} else {
|
||||
this.appendOnto(oldVal, newVal);
|
||||
}
|
||||
}
|
||||
}
|
||||
return base;
|
||||
},
|
||||
groupProps: function(obj, groups) {
|
||||
var def, defs, grouped, key, name, shouldAdd, val, _i, _len;
|
||||
grouped = {};
|
||||
for (name in groups) {
|
||||
defs = groups[name];
|
||||
grouped[name] = {};
|
||||
}
|
||||
grouped['rest'] = {};
|
||||
top: //;
|
||||
for (key in obj) {
|
||||
val = obj[key];
|
||||
shouldAdd = false;
|
||||
for (name in groups) {
|
||||
defs = groups[name];
|
||||
if (!Array.isArray(defs)) {
|
||||
defs = [defs];
|
||||
}
|
||||
for (_i = 0, _len = defs.length; _i < _len; _i++) {
|
||||
def = defs[_i];
|
||||
if (typeof def === 'string') {
|
||||
if (key === def) {
|
||||
shouldAdd = true;
|
||||
}
|
||||
} else if (def instanceof RegExp) {
|
||||
if (def.test(key)) {
|
||||
shouldAdd = true;
|
||||
}
|
||||
} else if (def instanceof Function) {
|
||||
if (def(key)) {
|
||||
shouldAdd = true;
|
||||
}
|
||||
} else {
|
||||
throw Error('Group definitions must either\
|
||||
be strings, regexes, or functions.');
|
||||
}
|
||||
if (shouldAdd) {
|
||||
grouped[name][key] = val;
|
||||
continue top;
|
||||
}
|
||||
}
|
||||
}
|
||||
grouped['rest'][key] = val;
|
||||
}
|
||||
return grouped;
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user