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.
		
		
		
		
		
			
		
			
				
					28 lines
				
				609 B
			
		
		
			
		
	
	
					28 lines
				
				609 B
			| 
											3 years ago
										 | const genfun = require('./') | ||
|  | const { d } = genfun.formats | ||
|  | 
 | ||
|  | function multiply (a, b) { | ||
|  |   return a * b | ||
|  | } | ||
|  | 
 | ||
|  | function addAndMultiplyNumber (val) { | ||
|  |   const fn = genfun(`
 | ||
|  |     function (n) { | ||
|  |       if (typeof n !== 'number') { | ||
|  |         throw new Error('argument should be a number') | ||
|  |       } | ||
|  |       const result = multiply(${d(val)}, n + ${d(val)}) | ||
|  |       return result | ||
|  |     } | ||
|  |   `)
 | ||
|  | 
 | ||
|  |   // use fn.toString() if you want to see the generated source
 | ||
|  | 
 | ||
|  |   return fn.toFunction({multiply}) | ||
|  | } | ||
|  | 
 | ||
|  | const addAndMultiply2 = addAndMultiplyNumber(2) | ||
|  | 
 | ||
|  | console.log(addAndMultiply2.toString()) | ||
|  | console.log('(3 + 2) * 2 =', addAndMultiply2(3)) |