OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 /** | 5 /** |
6 * This library lets you define parsers for parsing raw command-line arguments | 6 * This library lets you define parsers for parsing raw command-line arguments |
7 * into a set of options and values using [GNU][] and [POSIX][] style options. | 7 * into a set of options and values using [GNU][] and [POSIX][] style options. |
8 * | 8 * |
9 * ## Defining options ## | 9 * ## Defining options ## |
10 * | 10 * |
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
489 } | 489 } |
490 | 490 |
491 return true; | 491 return true; |
492 } | 492 } |
493 | 493 |
494 /** | 494 /** |
495 * Finds the option whose abbreviation is [abbr], or `null` if no option has | 495 * Finds the option whose abbreviation is [abbr], or `null` if no option has |
496 * that abbreviation. | 496 * that abbreviation. |
497 */ | 497 */ |
498 _Option _findByAbbr(String abbr) { | 498 _Option _findByAbbr(String abbr) { |
499 for (var option in _options.getValues()) { | 499 for (var option in _options.values) { |
500 if (option.abbreviation == abbr) return option; | 500 if (option.abbreviation == abbr) return option; |
501 } | 501 } |
502 | 502 |
503 return null; | 503 return null; |
504 } | 504 } |
505 | 505 |
506 /** | 506 /** |
507 * Get the default value for an option. Useful after parsing to test | 507 * Get the default value for an option. Useful after parsing to test |
508 * if the user specified something other than the default. | 508 * if the user specified something other than the default. |
509 */ | 509 */ |
(...skipping 27 matching lines...) Expand all Loading... |
537 operator [](String name) { | 537 operator [](String name) { |
538 if (!_options.containsKey(name)) { | 538 if (!_options.containsKey(name)) { |
539 throw new ArgumentError( | 539 throw new ArgumentError( |
540 'Could not find an option named "$name".'); | 540 'Could not find an option named "$name".'); |
541 } | 541 } |
542 | 542 |
543 return _options[name]; | 543 return _options[name]; |
544 } | 544 } |
545 | 545 |
546 /** Get the names of the options as a [Collection]. */ | 546 /** Get the names of the options as a [Collection]. */ |
547 Collection<String> get options => _options.getKeys(); | 547 Collection<String> get options => _options.keys; |
548 } | 548 } |
549 | 549 |
550 class _Option { | 550 class _Option { |
551 final String name; | 551 final String name; |
552 final String abbreviation; | 552 final String abbreviation; |
553 final List allowed; | 553 final List allowed; |
554 final defaultValue; | 554 final defaultValue; |
555 final Function callback; | 555 final Function callback; |
556 final String help; | 556 final String help; |
557 final Map<String, String> allowedHelp; | 557 final Map<String, String> allowedHelp; |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
623 calculateColumnWidths(); | 623 calculateColumnWidths(); |
624 | 624 |
625 for (var name in args._optionNames) { | 625 for (var name in args._optionNames) { |
626 var option = args._options[name]; | 626 var option = args._options[name]; |
627 write(0, getAbbreviation(option)); | 627 write(0, getAbbreviation(option)); |
628 write(1, getLongOption(option)); | 628 write(1, getLongOption(option)); |
629 | 629 |
630 if (option.help != null) write(2, option.help); | 630 if (option.help != null) write(2, option.help); |
631 | 631 |
632 if (option.allowedHelp != null) { | 632 if (option.allowedHelp != null) { |
633 var allowedNames = option.allowedHelp.getKeys(); | 633 var allowedNames = option.allowedHelp.keys; |
634 allowedNames.sort((a, b) => a.compareTo(b)); | 634 allowedNames.sort((a, b) => a.compareTo(b)); |
635 newline(); | 635 newline(); |
636 for (var name in allowedNames) { | 636 for (var name in allowedNames) { |
637 write(1, getAllowedTitle(name)); | 637 write(1, getAllowedTitle(name)); |
638 write(2, option.allowedHelp[name]); | 638 write(2, option.allowedHelp[name]); |
639 } | 639 } |
640 newline(); | 640 newline(); |
641 } else if (option.allowed != null) { | 641 } else if (option.allowed != null) { |
642 write(2, buildAllowedList(option)); | 642 write(2, buildAllowedList(option)); |
643 } else if (option.defaultValue != null) { | 643 } else if (option.defaultValue != null) { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
685 var option = args._options[name]; | 685 var option = args._options[name]; |
686 | 686 |
687 // Make room in the first column if there are abbreviations. | 687 // Make room in the first column if there are abbreviations. |
688 abbr = max(abbr, getAbbreviation(option).length); | 688 abbr = max(abbr, getAbbreviation(option).length); |
689 | 689 |
690 // Make room for the option. | 690 // Make room for the option. |
691 title = max(title, getLongOption(option).length); | 691 title = max(title, getLongOption(option).length); |
692 | 692 |
693 // Make room for the allowed help. | 693 // Make room for the allowed help. |
694 if (option.allowedHelp != null) { | 694 if (option.allowedHelp != null) { |
695 for (var allowed in option.allowedHelp.getKeys()) { | 695 for (var allowed in option.allowedHelp.keys) { |
696 title = max(title, getAllowedTitle(allowed).length); | 696 title = max(title, getAllowedTitle(allowed).length); |
697 } | 697 } |
698 } | 698 } |
699 } | 699 } |
700 | 700 |
701 // Leave a gutter between the columns. | 701 // Leave a gutter between the columns. |
702 title += 4; | 702 title += 4; |
703 columnWidths = [abbr, title]; | 703 columnWidths = [abbr, title]; |
704 } | 704 } |
705 | 705 |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
776 allowedBuffer.add(allowed); | 776 allowedBuffer.add(allowed); |
777 if (allowed == option.defaultValue) { | 777 if (allowed == option.defaultValue) { |
778 allowedBuffer.add(' (default)'); | 778 allowedBuffer.add(' (default)'); |
779 } | 779 } |
780 first = false; | 780 first = false; |
781 } | 781 } |
782 allowedBuffer.add(']'); | 782 allowedBuffer.add(']'); |
783 return allowedBuffer.toString(); | 783 return allowedBuffer.toString(); |
784 } | 784 } |
785 } | 785 } |
OLD | NEW |