blob: cd9b93287cd0b8ed9e1a7887ad4c68781f2ad32c [file] [log] [blame]
// 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;
}