API Docs for: 0.0.0
Show:

File: src/__subject/private/assign.js

/* jshint ignore:start */
if (typeof define !== 'function') { var define = require('amdefine')(module) }
/* jshint ignore:end */

define(function (require, exports, module) {
	'use strict';


	var _ = require('lodash');

	var defaultDescriptor = {
	//	value:
		configurable: true,
		writable:     true,
		enumerable:   true,
	};

	/**
	 *
	 *
	 * @method assign
	 * @private
	 * @param obj
	 * @param extensions
	 * @param [descriptor]
	 */
	module.exports = function assign(obj, extensions, descriptor) {

		if (!descriptor) {
			// simple assigning.

			return _.assign(obj, extensions);

		} else {
			// use defineProperty to assign.

			// set default values for descriptor
			_.defaults(descriptor, defaultDescriptor);

			_.each(extensions, function (value, property) {

				// set value on descriptor
				var desc = _.assign({ value: value }, descriptor);

			//	console.log('define ' + property);

				// run defineProperty
				Object.defineProperty(obj, property, desc);
			});

			return obj;
		}
	};

});