|
|
- /*!
- * prr
- * (c) 2013 Rod Vagg <rod@vagg.org>
- * https://github.com/rvagg/prr
- * License: MIT
- */
-
- (function (name, context, definition) {
- if (typeof module != 'undefined' && module.exports)
- module.exports = definition()
- else
- context[name] = definition()
- })('prr', this, function() {
-
- var setProperty = typeof Object.defineProperty == 'function'
- ? function (obj, key, options) {
- Object.defineProperty(obj, key, options)
- return obj
- }
- : function (obj, key, options) { // < es5
- obj[key] = options.value
- return obj
- }
-
- , makeOptions = function (value, options) {
- var oo = typeof options == 'object'
- , os = !oo && typeof options == 'string'
- , op = function (p) {
- return oo
- ? !!options[p]
- : os
- ? options.indexOf(p[0]) > -1
- : false
- }
-
- return {
- enumerable : op('enumerable')
- , configurable : op('configurable')
- , writable : op('writable')
- , value : value
- }
- }
-
- , prr = function (obj, key, value, options) {
- var k
-
- options = makeOptions(value, options)
-
- if (typeof key == 'object') {
- for (k in key) {
- if (Object.hasOwnProperty.call(key, k)) {
- options.value = key[k]
- setProperty(obj, k, options)
- }
- }
- return obj
- }
-
- return setProperty(obj, key, options)
- }
-
- return prr
- })
|