| Index: lib/src/intersection_selector.dart
|
| diff --git a/lib/src/intersection_selector.dart b/lib/src/intersection_selector.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..aa51bf94bb2d31f5cacf0fe8dbacaa8392b3f2bf
|
| --- /dev/null
|
| +++ b/lib/src/intersection_selector.dart
|
| @@ -0,0 +1,35 @@
|
| +// Copyright (c) 2016, 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.
|
| +
|
| +import '../boolean_selector.dart';
|
| +import 'union_selector.dart';
|
| +
|
| +/// A selector that matches inputs that both of its sub-selectors match.
|
| +class IntersectionSelector implements BooleanSelector {
|
| + final BooleanSelector _selector1;
|
| + final BooleanSelector _selector2;
|
| +
|
| + Iterable<String> get variables sync* {
|
| + yield* _selector1.variables;
|
| + yield* _selector2.variables;
|
| + }
|
| +
|
| + IntersectionSelector(this._selector1, this._selector2);
|
| +
|
| + bool evaluate(semantics) =>
|
| + _selector1.evaluate(semantics) && _selector2.evaluate(semantics);
|
| +
|
| + BooleanSelector intersection(BooleanSelector other) =>
|
| + new IntersectionSelector(this, other);
|
| +
|
| + BooleanSelector union(BooleanSelector other) =>
|
| + new UnionSelector(this, other);
|
| +
|
| + void validate(bool isDefined(String variable)) {
|
| + _selector1.validate(isDefined);
|
| + _selector2.validate(isDefined);
|
| + }
|
| +
|
| + String toString() => "($_selector1) && ($_selector2)";
|
| +}
|
|
|