You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					58 lines
				
				845 B
			
		
		
			
		
	
	
					58 lines
				
				845 B
			| 
								 
											4 years ago
										 
									 | 
							
								"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;
							 |