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

Side by Side Diff: tools/testing/dart/vendored_pkg/args/src/parser.dart

Issue 2903703002: Tighten types in test.dart even more. (Closed)
Patch Set: Play nicer with strong mode. Created 3 years, 6 months 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
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library args.src.parser; 5 library args.src.parser;
6 6
7 import '../args.dart'; 7 import '../args.dart';
8 8
9 final _SOLO_OPT = new RegExp(r'^-([a-zA-Z0-9])$'); 9 final _SOLO_OPT = new RegExp(r'^-([a-zA-Z0-9])$');
10 final _ABBR_OPT = new RegExp(r'^-([a-zA-Z0-9]+)(.*)$'); 10 final _ABBR_OPT = new RegExp(r'^-([a-zA-Z0-9]+)(.*)$');
(...skipping 17 matching lines...) Expand all
28 */ 28 */
29 final Parser parent; 29 final Parser parent;
30 30
31 /** The grammar being parsed. */ 31 /** The grammar being parsed. */
32 final ArgParser grammar; 32 final ArgParser grammar;
33 33
34 /** The arguments being parsed. */ 34 /** The arguments being parsed. */
35 final List<String> args; 35 final List<String> args;
36 36
37 /** The accumulated parsed options. */ 37 /** The accumulated parsed options. */
38 final Map results = {}; 38 final Map<String, dynamic> results = {};
39 39
40 Parser(this.commandName, this.grammar, this.args, [this.parent]); 40 Parser(this.commandName, this.grammar, this.args, [this.parent]);
41 41
42 /** The current argument being parsed. */ 42 /** The current argument being parsed. */
43 String get current => args[0]; 43 String get current => args[0];
44 44
45 /** Parses the arguments. This can only be called once. */ 45 /** Parses the arguments. This can only be called once. */
46 ArgResults parse() { 46 ArgResults parse() {
47 var commandResults = null; 47 ArgResults commandResults;
48 48
49 // Initialize flags to their defaults. 49 // Initialize flags to their defaults.
50 grammar.options.forEach((name, option) { 50 grammar.options.forEach((name, option) {
51 if (option.allowMultiple) { 51 if (option.allowMultiple) {
52 results[name] = []; 52 results[name] = [];
53 } else { 53 } else {
54 results[name] = option.defaultValue; 54 results[name] = option.defaultValue;
55 } 55 }
56 }); 56 });
57 57
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 return parent.parseLongOption(); 253 return parent.parseLongOption();
254 } 254 }
255 255
256 return true; 256 return true;
257 } 257 }
258 258
259 /** 259 /**
260 * Called during parsing to validate the arguments. Throws a 260 * Called during parsing to validate the arguments. Throws a
261 * [FormatException] if [condition] is `false`. 261 * [FormatException] if [condition] is `false`.
262 */ 262 */
263 validate(bool condition, String message) { 263 void validate(bool condition, String message) {
264 if (!condition) throw new FormatException(message); 264 if (!condition) throw new FormatException(message);
265 } 265 }
266 266
267 /** Validates and stores [value] as the value for [option]. */ 267 /** Validates and stores [value] as the value for [option]. */
268 setOption(Map results, Option option, value) { 268 void setOption(Map results, Option option, dynamic value) {
269 // See if it's one of the allowed values. 269 // See if it's one of the allowed values.
270 if (option.allowed != null) { 270 if (option.allowed != null) {
271 validate(option.allowed.any((allow) => allow == value), 271 validate(option.allowed.any((allow) => allow == value),
272 '"$value" is not an allowed value for option "${option.name}".'); 272 '"$value" is not an allowed value for option "${option.name}".');
273 } 273 }
274 274
275 if (option.allowMultiple) { 275 if (option.allowMultiple) {
276 results[option.name].add(value); 276 results[option.name].add(value);
277 } else { 277 } else {
278 results[option.name] = value; 278 results[option.name] = value;
279 } 279 }
280 } 280 }
281 } 281 }
OLDNEW
« no previous file with comments | « tools/testing/dart/vendored_pkg/args/args.dart ('k') | tools/testing/dart/vendored_pkg/args/src/usage.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698