24 lines
623 B
TypeScript
24 lines
623 B
TypeScript
|
export const commandLinkRegex =
|
||
|
/^\{\[([^\]\|]+)(\|([^\]]+))?\](\(([^\)]+)\))?\}/;
|
||
|
|
||
|
export type ParsedCommand = {
|
||
|
name: string;
|
||
|
args: any[];
|
||
|
alias?: string;
|
||
|
};
|
||
|
|
||
|
export function parseCommand(command: string): ParsedCommand {
|
||
|
const parsedCommand: ParsedCommand = { name: command, args: [] };
|
||
|
const commandMatch = commandLinkRegex.exec(command);
|
||
|
if (commandMatch) {
|
||
|
parsedCommand.name = commandMatch[1];
|
||
|
if (commandMatch[3]) {
|
||
|
parsedCommand.alias = commandMatch[3];
|
||
|
}
|
||
|
parsedCommand.args = commandMatch[5]
|
||
|
? JSON.parse(`[${commandMatch[5]}]`)
|
||
|
: [];
|
||
|
}
|
||
|
return parsedCommand;
|
||
|
}
|