Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(362)

Side by Side Diff: pkg/args/lib/src/arg_results.dart

Issue 814113004: Pull args, intl, logging, shelf, and source_maps out of the SDK. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Also csslib. Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/args/lib/src/arg_parser.dart ('k') | pkg/args/lib/src/help_command.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 library args.src.arg_results;
6
7 import 'package:collection/wrappers.dart';
8
9 import 'arg_parser.dart';
10
11 /// Creates a new [ArgResults].
12 ///
13 /// Since [ArgResults] doesn't have a public constructor, this lets [Parser]
14 /// get to it. This function isn't exported to the public API of the package.
15 ArgResults newArgResults(ArgParser parser, Map<String, dynamic> parsed,
16 String name, ArgResults command, List<String> rest,
17 List<String> arguments) {
18 return new ArgResults._(parser, parsed, name, command, rest, arguments);
19 }
20
21 /// The results of parsing a series of command line arguments using
22 /// [ArgParser.parse()].
23 ///
24 /// Includes the parsed options and any remaining unparsed command line
25 /// arguments.
26 class ArgResults {
27 /// The [ArgParser] whose options were parsed for these results.
28 final ArgParser _parser;
29
30 /// The option values that were parsed from arguments.
31 final Map<String, dynamic> _parsed;
32
33 /// If these are the results for parsing a command's options, this will be the
34 /// name of the command. For top-level results, this returns `null`.
35 final String name;
36
37 /// The command that was selected, or `null` if none was.
38 ///
39 /// This will contain the options that were selected for that command.
40 final ArgResults command;
41
42 /// The remaining command-line arguments that were not parsed as options or
43 /// flags.
44 ///
45 /// If `--` was used to separate the options from the remaining arguments,
46 /// it will not be included in this list unless parsing stopped before the
47 /// `--` was reached.
48 final List<String> rest;
49
50 /// The original list of arguments that were parsed.
51 final List<String> arguments;
52
53 /// Creates a new [ArgResults].
54 ArgResults._(this._parser, this._parsed, this.name, this.command,
55 List<String> rest, List<String> arguments)
56 : this.rest = new UnmodifiableListView(rest),
57 this.arguments = new UnmodifiableListView(arguments);
58
59 /// Gets the parsed command-line option named [name].
60 operator [](String name) {
61 if (!_parser.options.containsKey(name)) {
62 throw new ArgumentError('Could not find an option named "$name".');
63 }
64
65 return _parser.options[name].getOrDefault(_parsed[name]);
66 }
67
68 /// Get the names of the available options as an [Iterable].
69 ///
70 /// This includes the options whose values were parsed or that have defaults.
71 /// Options that weren't present and have no default will be omitted.
72 Iterable<String> get options {
73 var result = new Set.from(_parsed.keys);
74
75 // Include the options that have defaults.
76 _parser.options.forEach((name, option) {
77 if (option.defaultValue != null) result.add(name);
78 });
79
80 return result;
81 }
82
83 /// Returns `true` if the option with [name] was parsed from an actual
84 /// argument.
85 ///
86 /// Returns `false` if it wasn't provided and the default value or no default
87 /// value would be used instead.
88 bool wasParsed(String name) {
89 var option = _parser.options[name];
90 if (option == null) {
91 throw new ArgumentError('Could not find an option named "$name".');
92 }
93
94 return _parsed.containsKey(name);
95 }
96 }
OLDNEW
« no previous file with comments | « pkg/args/lib/src/arg_parser.dart ('k') | pkg/args/lib/src/help_command.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698