aboutsummaryrefslogtreecommitdiff
path: root/src/CommandParser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/CommandParser.cpp')
-rw-r--r--src/CommandParser.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/CommandParser.cpp b/src/CommandParser.cpp
new file mode 100644
index 0000000..ccb84bc
--- /dev/null
+++ b/src/CommandParser.cpp
@@ -0,0 +1,32 @@
+#include <QtCore/qnamespace.h>
+#include <QtCore>
+
+#include "CommandParser.hpp"
+
+CommandParser::CommandParser() {}
+
+Cmd CommandParser::parse(QString input) {
+ auto parts = input.split(QRegularExpression("\\s+"), Qt::SkipEmptyParts);
+
+ if (parts.isEmpty())
+ return Cmd();
+
+ auto cmd = toCommandType(parts.first());
+ parts.removeFirst();
+ return Cmd(cmd, parts);
+}
+
+CommandType CommandParser::toCommandType(QString cmd) {
+ if (cmd == "lua")
+ return LuaEval;
+ if (cmd == "open")
+ return Open;
+ if (cmd == "tabopen")
+ return TabOpen;
+ if (cmd == "bn" || cmd == "bnext")
+ return TabNext;
+ if (cmd == "bp" || cmd == "bprevious")
+ return TabPrev;
+
+ return Noop;
+}