StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
				https://doi.org/10.1109/TVCG.2020.3030352
			
			
		
			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.
		
		
		
		
		
			
		
			
				
					
					
						
							60 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							60 lines
						
					
					
						
							1.3 KiB
						
					
					
				| // pass in a manifest with a 'bin' field here, and it'll turn it
 | |
| // into a properly santized bin object
 | |
| const {join, basename} = require('path')
 | |
| 
 | |
| const normalize = pkg =>
 | |
|   !pkg.bin ? removeBin(pkg)
 | |
|   : typeof pkg.bin === 'string' ? normalizeString(pkg)
 | |
|   : Array.isArray(pkg.bin) ? normalizeArray(pkg)
 | |
|   : typeof pkg.bin === 'object' ? normalizeObject(pkg)
 | |
|   : removeBin(pkg)
 | |
| 
 | |
| const normalizeString = pkg => {
 | |
|   if (!pkg.name)
 | |
|     return removeBin(pkg)
 | |
|   pkg.bin = { [pkg.name]: pkg.bin }
 | |
|   return normalizeObject(pkg)
 | |
| }
 | |
| 
 | |
| const normalizeArray = pkg => {
 | |
|   pkg.bin = pkg.bin.reduce((acc, k) => {
 | |
|     acc[basename(k)] = k
 | |
|     return acc
 | |
|   }, {})
 | |
|   return normalizeObject(pkg)
 | |
| }
 | |
| 
 | |
| const removeBin = pkg => {
 | |
|   delete pkg.bin
 | |
|   return pkg
 | |
| }
 | |
| 
 | |
| const normalizeObject = pkg => {
 | |
|   const orig = pkg.bin
 | |
|   const clean = {}
 | |
|   let hasBins = false
 | |
|   Object.keys(orig).forEach(binKey => {
 | |
|     const base = join('/', basename(binKey.replace(/\\|:/g, '/'))).substr(1)
 | |
| 
 | |
|     if (typeof orig[binKey] !== 'string' || !base)
 | |
|       return
 | |
| 
 | |
|     const binTarget = join('/', orig[binKey])
 | |
|       .replace(/\\/g, '/').substr(1)
 | |
| 
 | |
|     if (!binTarget)
 | |
|       return
 | |
| 
 | |
|     clean[base] = binTarget
 | |
|     hasBins = true
 | |
|   })
 | |
| 
 | |
|   if (hasBins)
 | |
|     pkg.bin = clean
 | |
|   else
 | |
|     delete pkg.bin
 | |
| 
 | |
|   return pkg
 | |
| }
 | |
| 
 | |
| module.exports = normalize
 | |
| 
 |