OLD | NEW |
(Empty) | |
| 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 |
| 3 // BSD-style license that can be found in the LICENSE file. |
| 4 |
| 5 #library('options'); |
| 6 |
| 7 /** |
| 8 * An individual option. |
| 9 */ |
| 10 class ArchiveOption { |
| 11 /** The name of the option. */ |
| 12 final String name; |
| 13 |
| 14 /** The value of the option. */ |
| 15 final value; |
| 16 |
| 17 /** The module to which the option applies.*/ |
| 18 String module; |
| 19 |
| 20 ArchiveOption(this.name, this.value, [this.module]); |
| 21 } |
| 22 |
| 23 /** |
| 24 * A collection of options. |
| 25 */ |
| 26 class ArchiveOptions { |
| 27 /** The internal options map. */ |
| 28 final Map<String, ArchiveOption> _options; |
| 29 |
| 30 ArchiveOptions() : _options = <ArchiveOption>{}; |
| 31 |
| 32 /** Returns whether any options have been set. */ |
| 33 bool get isEmpty() => _options.isEmpty(); |
| 34 |
| 35 /** |
| 36 * Sets an option. [value] should either be a bool or something with a |
| 37 * reasonable `toString` method. |
| 38 * |
| 39 * To set the module for an option, use [operator[]]. |
| 40 */ |
| 41 void operator[]=(String name, value) { |
| 42 _options[name] = new ArchiveOption(name, value); |
| 43 } |
| 44 |
| 45 /** Gets the option with the given name. */ |
| 46 ArchiveOption operator[](String name) { |
| 47 return _options[name]; |
| 48 } |
| 49 |
| 50 /** |
| 51 * Serializes the options to the format understood by libarchive. |
| 52 * |
| 53 * Meant for internal use. |
| 54 */ |
| 55 String serialize() { |
| 56 return Strings.join(_options.getValues().map((option) { |
| 57 if (option.value is Boolean) { |
| 58 return '${option.value ? '!' : ''}${option.name}'; |
| 59 } else { |
| 60 return '${option.name}=${option.value}'; |
| 61 } |
| 62 }), ','); |
| 63 } |
| 64 } |
OLD | NEW |