mirror of
https://github.com/vale981/Vulcan
synced 2025-03-06 10:01:40 -05:00

* [eslint] update eslint rules & add .eslintignore to ignore non-ready nova packages * [clean-up] nova-voting * [clean-up] [bug] nova-users: missing user parameter * [clean-up] nova-users * [clean-up] nova-subscribe * [clean-up] nova-settings * [clean-up] nova-rss * [clean-up] [bug] nova-posts: correct UsersRemoveDeletePosts * [clean-up] nova-posts * [clean-up] nova-notifications * [clean-up] [bug] nova-newsletter: no error.message on throw error * [clean-up] nova-newsletter * [clean-up] nova-lib * [clean-up] nova-kadira * [clean-up] nova-inject-data * [clean-up] nova-getting-started * [clean-up] nova-forms * [clean-up] nova-events * [clean-up] [bug] nova-embedly: no FlowRouter * [clean-up] nova-embedly * [clean-up] nova-email-templates * [clean-up] nova-email * [clean-up] nova-debug * [clean-up] nova-core * [clean-up] [bug] nova-comments: correct UsersRemoveDeleteComments * [clean-up] nova-comments * [clean-up] [bug] nova-cloudinary: use Telescope.settings.collection instand * [clean-up] nova-cloudinary * [clean-up] nova-categories * [clean-up] nova-base-components * [clean-up] nova-api * [eslint] extends react recommended * [clean-up] for jsx files * [eslint] extends meteor recommended * i forgot this one little change
76 lines
1.4 KiB
JavaScript
76 lines
1.4 KiB
JavaScript
/* eslint-disable */
|
|
// see https://gist.github.com/furf/3208381
|
|
|
|
_.mixin({
|
|
|
|
// Get/set the value of a nested property
|
|
deep: function (obj, key, value) {
|
|
|
|
var keys = key.replace(/\[(["']?)([^\1]+?)\1?\]/g, '.$2').replace(/^\./, '').split('.'),
|
|
root,
|
|
i = 0,
|
|
n = keys.length;
|
|
|
|
// Set deep value
|
|
if (arguments.length > 2) {
|
|
|
|
root = obj;
|
|
n--;
|
|
|
|
while (i < n) {
|
|
key = keys[i++];
|
|
obj = obj[key] = _.isObject(obj[key]) ? obj[key] : {};
|
|
}
|
|
|
|
obj[keys[i]] = value;
|
|
|
|
value = root;
|
|
|
|
// Get deep value
|
|
} else {
|
|
while ((obj = obj[keys[i++]]) !== null && i < n) {};
|
|
value = i < n ? void 0 : obj;
|
|
}
|
|
|
|
return value;
|
|
}
|
|
|
|
});
|
|
|
|
// Usage:
|
|
//
|
|
// var obj = {
|
|
// a: {
|
|
// b: {
|
|
// c: {
|
|
// d: ['e', 'f', 'g']
|
|
// }
|
|
// }
|
|
// }
|
|
// };
|
|
//
|
|
// Get deep value
|
|
// _.deep(obj, 'a.b.c.d[2]'); // 'g'
|
|
//
|
|
// Set deep value
|
|
// _.deep(obj, 'a.b.c.d[2]', 'george');
|
|
//
|
|
// _.deep(obj, 'a.b.c.d[2]'); // 'george'
|
|
|
|
|
|
_.mixin({
|
|
pluckDeep: function (obj, key) {
|
|
return _.map(obj, function (value) { return _.deep(value, key); });
|
|
}
|
|
});
|
|
|
|
|
|
_.mixin({
|
|
|
|
// Return a copy of an object containing all but the blacklisted properties.
|
|
unpick: function (obj) {
|
|
obj = obj || {};
|
|
return _.pick(obj, _.difference(_.keys(obj), _.flatten(Array.prototype.slice.call(arguments, 1))));
|
|
}
|
|
|
|
});
|