diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-12-21 17:59:34 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-12-21 17:59:34 +0100 |
commit | dd68f2d20c4340bf31db960df558a7d9f603bb3a (patch) | |
tree | e1328a24539ac5b983129bbf4f76be837a18950a /sinksh/syntaxtree.cpp | |
parent | 18e6abad3669c2c0ef55922543b4033b031893ff (diff) | |
download | sink-dd68f2d20c4340bf31db960df558a7d9f603bb3a.tar.gz sink-dd68f2d20c4340bf31db960df558a7d9f603bb3a.zip |
sinksh list commandline arguments
Diffstat (limited to 'sinksh/syntaxtree.cpp')
-rw-r--r-- | sinksh/syntaxtree.cpp | 27 |
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 | |||
227 | SyntaxTree::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 | } | ||