summaryrefslogtreecommitdiffstats
path: root/sinksh/syntaxtree.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-12-21 17:59:34 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-12-21 17:59:34 +0100
commitdd68f2d20c4340bf31db960df558a7d9f603bb3a (patch)
treee1328a24539ac5b983129bbf4f76be837a18950a /sinksh/syntaxtree.cpp
parent18e6abad3669c2c0ef55922543b4033b031893ff (diff)
downloadsink-dd68f2d20c4340bf31db960df558a7d9f603bb3a.tar.gz
sink-dd68f2d20c4340bf31db960df558a7d9f603bb3a.zip
sinksh list commandline arguments
Diffstat (limited to 'sinksh/syntaxtree.cpp')
-rw-r--r--sinksh/syntaxtree.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/sinksh/syntaxtree.cpp b/sinksh/syntaxtree.cpp
index 8a8684c..ee9d6f8 100644
--- a/sinksh/syntaxtree.cpp
+++ b/sinksh/syntaxtree.cpp
@@ -223,3 +223,30 @@ QStringList SyntaxTree::tokenize(const QString &text)
223 223
224 return tokens; 224 return tokens;
225} 225}
226
227SyntaxTree::Options SyntaxTree::parseOptions(const QStringList &args)
228{
229 Options result;
230 auto it = args.constBegin();
231 for (;it != args.constEnd(); it++) {
232 if (it->startsWith("--")) {
233 QString option = it->mid(2);
234 QStringList list;
235 it++;
236 for (;it != args.constEnd(); it++) {
237 if (it->startsWith("--")) {
238 it--;
239 break;
240 }
241 list << *it;
242 }
243 result.options.insert(option, list);
244 if (it == args.constEnd()) {
245 break;
246 }
247 } else {
248 result.positionalArguments << *it;
249 }
250 }
251 return result;
252}