25 lines
		
	
	
		
			635 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			25 lines
		
	
	
		
			635 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								var arrayReduce = require('./_arrayReduce'),
							 | 
						||
| 
								 | 
							
								    deburr = require('./deburr'),
							 | 
						||
| 
								 | 
							
								    words = require('./words');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** Used to compose unicode capture groups. */
							 | 
						||
| 
								 | 
							
								var rsApos = "['\u2019]";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** Used to match apostrophes. */
							 | 
						||
| 
								 | 
							
								var reApos = RegExp(rsApos, 'g');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Creates a function like `_.camelCase`.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 * @param {Function} callback The function to combine each word.
							 | 
						||
| 
								 | 
							
								 * @returns {Function} Returns the new compounder function.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function createCompounder(callback) {
							 | 
						||
| 
								 | 
							
								  return function(string) {
							 | 
						||
| 
								 | 
							
								    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = createCompounder;
							 |