| "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; |