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)
 | 
						|
}
 |