| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| library options; |
| |
| /** |
| * An individual option. |
| */ |
| class ArchiveOption { |
| /** The name of the option. */ |
| final String name; |
| |
| /** The value of the option. */ |
| final value; |
| |
| /** The module to which the option applies.*/ |
| String module; |
| |
| ArchiveOption(this.name, this.value, [this.module]); |
| } |
| |
| /** |
| * A collection of options. |
| */ |
| class ArchiveOptions { |
| /** The internal options map. */ |
| final Map<String, ArchiveOption> _options; |
| |
| ArchiveOptions() : _options = <String, ArchiveOption>{}; |
| |
| /** Returns whether any options have been set. */ |
| bool get isEmpty => _options.isEmpty; |
| |
| /** |
| * Sets an option. [value] should either be a bool or something with a |
| * reasonable `toString` method. |
| * |
| * To set the module for an option, use [operator[]]. |
| */ |
| void operator[]=(String name, value) { |
| _options[name] = new ArchiveOption(name, value); |
| } |
| |
| /** Gets the option with the given name. */ |
| ArchiveOption operator[](String name) { |
| return _options[name]; |
| } |
| |
| /** Gets all options. */ |
| List<ArchiveOption> get all => _options.values; |
| } |