diff options
Diffstat (limited to 'src/console/commandline/CommandParser.ts')
-rw-r--r-- | src/console/commandline/CommandParser.ts | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/console/commandline/CommandParser.ts b/src/console/commandline/CommandParser.ts new file mode 100644 index 0000000..5228c77 --- /dev/null +++ b/src/console/commandline/CommandParser.ts @@ -0,0 +1,52 @@ +import { Command } from "../../shared/Command"; + +export class UnknownCommandError extends Error { + constructor(value: string) { + super(`unknown command '${value}'`); + } +} + +export default class CommandParser { + parse(value: string): Command { + switch (value) { + case 'o': + case 'open': + return Command.Open; + case 't': + case 'tabopen': + return Command.TabOpen; + case 'w': + case 'winopen': + return Command.WindowOpen; + case 'b': + case 'buffer': + return Command.Buffer; + case 'bd': + case 'bdel': + case 'bdelete': + return Command.BufferDelete; + case 'bd!': + case 'bdel!': + case 'bdelete!': + return Command.BufferDeleteForce; + case 'bdeletes': + return Command.BuffersDelete; + case 'bdeletes!': + return Command.BuffersDeleteForce; + case 'addbookmark': + return Command.AddBookmark; + case 'q': + case 'quit': + return Command.Quit; + case 'qa': + case 'quitall': + return Command.QuitAll; + case 'set': + return Command.Set; + case 'h': + case 'help': + return Command.Help; + } + throw new UnknownCommandError(value); + } +} |