fuse<R> method
Fuses this
with other
.
When encoding, the resulting codec encodes with this
before
encoding with other
.
When decoding, the resulting codec decodes with other
before decoding
with this
.
In some cases one needs to use the inverted codecs to be able to fuse
them correctly. That is, the output type of this
(T
) must match the
input type of the second codec other
.
Examples:
final jsonToBytes = json.fuse(utf8);
List<int> bytes = jsonToBytes.encode(["json-object"]);
var decoded = jsonToBytes.decode(bytes);
assert(decoded is List && decoded[0] == "json-object");
var inverted = json.inverted;
var jsonIdentity = json.fuse(inverted);
var jsonObject = jsonIdentity.encode(["1", 2]);
assert(jsonObject is List && jsonObject[0] == "1" && jsonObject[1] == 2);
Implementation
// TODO(floitsch): use better example with line-splitter once that one is
// in this library.
Codec<S, R> fuse<R>(Codec<T, R> other) {
return _FusedCodec<S, T, R>(this, other);
}