21 lines
		
	
	
	
		
			739 B
			
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			21 lines
		
	
	
	
		
			739 B
			
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict'
 | 
						|
 | 
						|
// parses a feature string that has the format used in window.open()
 | 
						|
// - `features` input string
 | 
						|
// - `emit` function(key, value) - called for each parsed KV
 | 
						|
module.exports = function parseFeaturesString (features, emit) {
 | 
						|
  features = `${features}`.trim()
 | 
						|
  // split the string by ','
 | 
						|
  features.split(/\s*,\s*/).forEach((feature) => {
 | 
						|
    // expected form is either a key by itself or a key/value pair in the form of
 | 
						|
    // 'key=value'
 | 
						|
    let [key, value] = feature.split(/\s*=\s*/)
 | 
						|
    if (!key) return
 | 
						|
 | 
						|
    // interpret the value as a boolean, if possible
 | 
						|
    value = (value === 'yes' || value === '1') ? true : (value === 'no' || value === '0') ? false : value
 | 
						|
 | 
						|
    // emit the parsed pair
 | 
						|
    emit(key, value)
 | 
						|
  })
 | 
						|
}
 |