diff options
Diffstat (limited to 'node_modules/relateurl/lib/options.js')
-rw-r--r-- | node_modules/relateurl/lib/options.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/node_modules/relateurl/lib/options.js b/node_modules/relateurl/lib/options.js new file mode 100644 index 000000000..fe8910f71 --- /dev/null +++ b/node_modules/relateurl/lib/options.js @@ -0,0 +1,57 @@ +"use strict"; + +var objUtils = require("./util/object"); + + + +function getOptions(options, defaults) +{ + if ( objUtils.isPlainObject(options) ) + { + var newOptions = {}; + + for (var i in defaults) + { + if ( defaults.hasOwnProperty(i) ) + { + if (options[i] !== undefined) + { + newOptions[i] = mergeOption(options[i], defaults[i]); + } + else + { + newOptions[i] = defaults[i]; + } + } + } + + return newOptions; + } + else + { + return defaults; + } +} + + + +function mergeOption(newValues, defaultValues) +{ + if (defaultValues instanceof Object && newValues instanceof Object) + { + if (defaultValues instanceof Array && newValues instanceof Array) + { + return defaultValues.concat(newValues); + } + else + { + return objUtils.shallowMerge(newValues, defaultValues); + } + } + + return newValues; +} + + + +module.exports = getOptions; |