44 lines
		
	
	
		
			948 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			948 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								var kLogsArgument = /^--logs\s*=\s*(.+?)$/;
							 | 
						||
| 
								 | 
							
								var kTrimLeft = /^\s+/;
							 | 
						||
| 
								 | 
							
								var kTrimRight = /\s+$/;
							 | 
						||
| 
								 | 
							
								var kCamelCase = /[-_\s]+(.)?/g;
							 | 
						||
| 
								 | 
							
								var logs = findArgvLogs();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function findArgvLogs() {
							 | 
						||
| 
								 | 
							
								  for (var i = 0; i < process.argv.length; ++i) {
							 | 
						||
| 
								 | 
							
								    var match = process.argv[i].match(kLogsArgument);
							 | 
						||
| 
								 | 
							
								    if (match) {
							 | 
						||
| 
								 | 
							
								      return logsToObject(match[1]);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return null;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function logsToObject(logstr) {
							 | 
						||
| 
								 | 
							
								  return logstr.
							 | 
						||
| 
								 | 
							
								    split(',').
							 | 
						||
| 
								 | 
							
								    reduce(function(obj, key) {
							 | 
						||
| 
								 | 
							
								      key = camelize(key);
							 | 
						||
| 
								 | 
							
								      if (key.length > 0) obj[key] = true;
							 | 
						||
| 
								 | 
							
								      return obj;
							 | 
						||
| 
								 | 
							
								    }, Object.create(null));
							 | 
						||
| 
								 | 
							
								  return logs;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function camelize(str) {
							 | 
						||
| 
								 | 
							
								  return str.
							 | 
						||
| 
								 | 
							
								    replace(kTrimLeft, '').
							 | 
						||
| 
								 | 
							
								    replace(kTrimRight, '').
							 | 
						||
| 
								 | 
							
								    replace(kCamelCase, function(match, c) {
							 | 
						||
| 
								 | 
							
								      return c ? c.toUpperCase() : "";
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function shouldLog(str) {
							 | 
						||
| 
								 | 
							
								  if (!logs || logs.quiet) return false;
							 | 
						||
| 
								 | 
							
								  if (logs.all) return true;
							 | 
						||
| 
								 | 
							
								  return !!logs[camelize(str)];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = shouldLog;
							 |