23 lines
		
	
	
	
		
			662 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
	
		
			662 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // License: LGPL-3.0-or-later
 | |
| const R = require('ramda')
 | |
| 
 | |
| const splitParam = str =>
 | |
|   R.split(/[_;,]/, str)
 | |
| 
 | |
| module.exports = params => {
 | |
|   const defaultAmts = '10,25,50,100,250,500,1000'
 | |
|   // Set defaults
 | |
|   const merge = R.merge({
 | |
|     custom_amounts: ''
 | |
|   })
 | |
|   // Preprocess data
 | |
|   const evolve = R.evolve({
 | |
|     multiple_designations: splitParam
 | |
|   , custom_amounts: amts => R.compose(R.map(Number), splitParam)(amts || defaultAmts)
 | |
|   , custom_fields: fields => R.map(f => {
 | |
|       const [name, label] = R.map(R.trim, R.split(':', f))
 | |
|       return {name, label: label ? label : name}
 | |
|     }, R.split(',',  fields))
 | |
|   })
 | |
|   return R.compose(evolve, merge)(params)
 | |
| }
 | 
