| // Copyright (c) 2013, 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 polymer_expressions.filter; |
| |
| typedef Object Filter(Object value); |
| |
| abstract class Transformer<T, V> { |
| |
| T forward(V v); |
| V reverse(T t); |
| Transformer<V, T> get inverse => new _InverseTransformer<V, T>(this); |
| } |
| |
| class _InverseTransformer<V, T> implements Transformer<V, T> { |
| final Transformer<T, V> _t; |
| _InverseTransformer(this._t); |
| |
| V forward(T v) => _t.reverse(v); |
| T reverse(V t) => _t.forward(t); |
| Transformer<T, V> get inverse => _t; |
| } |