40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { CommandConfig } from "../command-config.js";
 | |
| 
 | |
| export function getAllCommands(inputTokens) {
 | |
|     const tokens = inputTokens;
 | |
| 
 | |
|     const commandArray = [];
 | |
| 
 | |
|     for(let i = 0; i < tokens.length; i++) {
 | |
|         const command = getMatchingCommand(tokens[i]);
 | |
| 
 | |
|         if(command) {
 | |
|             const isValid = ((i + command.params.length) < tokens.length);
 | |
|             if(isValid) {
 | |
|                 const parameters = {};
 | |
|                 for(let k = 0; k < command.params.length; k++) {
 | |
|                     const name = command.params[k];
 | |
|                     const value = tokens[i + k + 1];
 | |
|                     parameters[name] = value;
 | |
|                 }
 | |
|                 const commandObject = {
 | |
|                     command: command.name,
 | |
|                     parameters: parameters,
 | |
|                     func: command.func,
 | |
|                 };
 | |
|                 commandArray.push(commandObject);
 | |
|                 i += command.params.length;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     return commandArray;
 | |
| }
 | |
| 
 | |
| function getMatchingCommand(token) {
 | |
|     const match = CommandConfig.find(
 | |
|         (el) => el?.commands?.includes(token)
 | |
|     );
 | |
| 
 | |
|     return match;
 | |
| } |