lib/platelets.js
function prop(dest, pd, src, isrc, ndflt, nm, nmsrc) {
    if (nm && src) {
        assert.strictEqual(dest[pd.n], src[pd.n], (nm ? nm + '.' : '') + pd.n + ': ' + dest[pd.n] + ' !== ' + 
            (nmsrc ? nmsrc + '.' : '') + pd.n + ': ' + src[pd.n]);
    } else {
        var dtyp = (dest && typeof dest[pd.n]) || '', vtyp, v, useObj = pd.v && Array.isArray(pd.v);
        if (dtyp === 'undefined') v = (src && (isrc || pd.i) && (!useObj || typeof src[pd.n] === 'object') ? src[pd.n] : null) || (ndflt ? undefined : pd.d);
        else if (!useObj && dtyp === 'number') v = typeof pd.l === 'number' && dest[pd.n] < pd.l ? pd.l : typeof pd.h === 'number' && dest[pd.n] > pd.h ? pd.h : undefined;
        else if (useObj && dtyp === 'object') v = props(dest[pd.n], pd.v, src[pd.n], isrc, ndflt, nm, nmsrc);
        if ((vtyp = typeof v) !== 'undefined' && (!pd.r || !!~pd.r.indexOf(v))) {
            if (!pd.c || (vtyp === typeof pd.c && Array.isArray(pd.c) === Array.isArray(v))) dest[pd.n] = v;
        }
    }
    return dest;
}
function prop(dest, pd, src, isrc, ndflt, nm, nmsrc) {
    if (nm && src) {
        assert.strictEqual(dest[pd.n], src[pd.n], (nm ? nm + '.' : '') + pd.n + ': ' + dest[pd.n] + ' !== ' + 
            (nmsrc ? nmsrc + '.' : '') + pd.n + ': ' + src[pd.n]);
    } else {
        var dtyp = (dest && typeof dest[pd.n]) || '', vtyp, v, useObj = pd.v && Array.isArray(pd.v);
        if (dtyp === 'undefined') v = (src && (isrc || pd.i) && (!useObj || typeof src[pd.n] === 'object') ? src[pd.n] : null) || (ndflt ? undefined : pd.d);
        else if (!useObj && dtyp === 'number') v = typeof pd.l === 'number' && dest[pd.n] < pd.l ? pd.l : typeof pd.h === 'number' && dest[pd.n] > pd.h ? pd.h : undefined;
        else if (useObj && dtyp === 'object') v = props(dest[pd.n], pd.v, src[pd.n], isrc, ndflt, nm, nmsrc);
        if ((vtyp = typeof v) !== 'undefined' && (!pd.r || !!~pd.r.indexOf(v))) {
            if (!pd.c || (vtyp === typeof pd.c && Array.isArray(pd.c) === Array.isArray(v))) dest[pd.n] = v;
        }
    }
    return dest;
}
function prop ( dest , pd , src , isrc , ndflt , nm , nmsrc ) { if ( nm && src ) { assert . strictEqual ( dest [ pd . n ] , src [ pd . n ] , ( nm ? nm + '.' : '' ) + pd . n + ': ' + dest [ pd . n ] + ' !== ' + ( nmsrc ? nmsrc + '.' : '' ) + pd . n + ': ' + src [ pd . n ] ) ; } else { var dtyp = ( dest && typeof dest [ pd . n ] ) || '' , vtyp , v , useObj = pd . v && Array . isArray ( pd . v ) ; if ( dtyp === 'undefined' ) v = ( src && ( isrc || pd . i ) && ( ! useObj || typeof src [ pd . n ] === 'object' ) ? src [ pd . n ] : null ) || ( ndflt ? undefined : pd . d ) ; else if ( ! useObj && dtyp === 'number' ) v = typeof pd . l === 'number' && dest [ pd . n ] < pd . l ? pd . l : typeof pd . h === 'number' && dest [ pd . n ] > pd . h ? pd . h : undefined ; else if ( useObj && dtyp === 'object' ) v = props ( dest [ pd . n ] , pd . v , src [ pd . n ] , isrc , ndflt , nm , nmsrc ) ; if ( ( vtyp = typeof v ) !== 'undefined' && ( ! pd . r || ! ! ~ pd . r . indexOf ( v ) ) ) { if ( ! pd . c || ( vtyp === typeof pd . c && Array . isArray ( pd . c ) === Array . isArray ( v ) ) ) dest [ pd . n ] = v ; } } return dest ; }
Assigns a property value on a destination object or asserts that the destination object property is within the defined boundaries when a source object is passed along with its name

@arg {Object} dest the object to assign properties to or assert properties for
@arg {Object} pd the property definition that determine which property will be assigned or asserted
@arg {String} pd.n the name of the property that will be assigned or asserted
@arg {*} [pd.d] a default value that will be used when there is no property defined on the source object (assignment only)
@arg {Boolean} [pd.i] true to inherit value from the passed source object (assignment only)
@arg {Number} [pd.l] when the property is a number, the lowest acceptable numeric value for the property (assignment only)
@arg {Number} [pd.h] when the property is a number, the highest acceptable numeric value for the property (assignment only)
@arg {Object[]} [pd.r] a range of valid values that the property value will be restricted to (assignment only)
@arg {*} [pd.c] a reference object that will be used to constrain the destination property to (uses typeof and Array.isArray- assignment only)
@arg {Object} [src] source object that will be used for default property values or when assertion will be used for equallity
@arg {Boolean} [isrc] true to always inherit from the source object properties when the value is not undefined, regardless of property definition (assignment only)
@arg {String} [nm] a name assigned to the object (assertion only)
@arg {String} [nmsrc] a name assigned to the source object (assertion only)
@returns {Object} the passed object
Assigns a property value on a destination object or asserts that the destination object property is within the defined boundaries when a source object is passed along with its name