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.
		
		
		
		
		
			
		
			
				
					
					
						
							50 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
	
	
							50 lines
						
					
					
						
							1.0 KiB
						
					
					
				/*! | 
						|
 * get-value <https://github.com/jonschlinkert/get-value> | 
						|
 * | 
						|
 * Copyright (c) 2014-2015, Jon Schlinkert. | 
						|
 * Licensed under the MIT License. | 
						|
 */ | 
						|
 | 
						|
module.exports = function(obj, prop, a, b, c) { | 
						|
  if (!isObject(obj) || !prop) { | 
						|
    return obj; | 
						|
  } | 
						|
 | 
						|
  prop = toString(prop); | 
						|
 | 
						|
  // allowing for multiple properties to be passed as | 
						|
  // a string or array, but much faster (3-4x) than doing | 
						|
  // `[].slice.call(arguments)` | 
						|
  if (a) prop += '.' + toString(a); | 
						|
  if (b) prop += '.' + toString(b); | 
						|
  if (c) prop += '.' + toString(c); | 
						|
 | 
						|
  if (prop in obj) { | 
						|
    return obj[prop]; | 
						|
  } | 
						|
 | 
						|
  var segs = prop.split('.'); | 
						|
  var len = segs.length; | 
						|
  var i = -1; | 
						|
 | 
						|
  while (obj && (++i < len)) { | 
						|
    var key = segs[i]; | 
						|
    while (key[key.length - 1] === '\\') { | 
						|
      key = key.slice(0, -1) + '.' + segs[++i]; | 
						|
    } | 
						|
    obj = obj[key]; | 
						|
  } | 
						|
  return obj; | 
						|
}; | 
						|
 | 
						|
function isObject(val) { | 
						|
  return val !== null && (typeof val === 'object' || typeof val === 'function'); | 
						|
} | 
						|
 | 
						|
function toString(val) { | 
						|
  if (!val) return ''; | 
						|
  if (Array.isArray(val)) { | 
						|
    return val.join('.'); | 
						|
  } | 
						|
  return val; | 
						|
}
 | 
						|
 |