video-pipeline/src/parsing/parse-commands.js

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