UNPKG

uritemplate

Version:

An UriTemplate implementation of rfc 6570

37 lines (35 loc) 1.26 kB
/*jshint unused:false */ /*global objectHelper*/ /** * Detects, whether a given element is defined in the sense of rfc 6570 * Section 2.3 of the RFC makes clear defintions: * * undefined and null are not defined. * * the empty string is defined * * an array ("list") is defined, if it is not empty (even if all elements are not defined) * * an object ("map") is defined, if it contains at least one property with defined value * @param object * @return {Boolean} */ function isDefined (object) { "use strict"; var propertyName; if (object === null || object === undefined) { return false; } if (objectHelper.isArray(object)) { // Section 2.3: A variable defined as a list value is considered undefined if the list contains zero members return object.length > 0; } if (typeof object === "string" || typeof object === "number" || typeof object === "boolean") { // falsy values like empty strings, false or 0 are "defined" return true; } // else Object for (propertyName in object) { if (object.hasOwnProperty(propertyName) && isDefined(object[propertyName])) { return true; } } return false; }