Ejemplo n.º 1
0
 /// <summary>
 /// Describes an optional object field.
 /// </summary>
 public static Codec <JToken, Pair <TPrev, Option <TProp> >, T> Optional <T, TPrev, TProp>(
     this Codec <JToken, TPrev, T> codec,
     string fieldName,
     Func <T, Option <TProp> > getter,
     Codec <JToken, TProp> fieldCodec) =>
 CreateFree(
     codec.Decoder.Optional(fieldName, fieldCodec.Decoder),
     Encoder.Divide <JToken, T, T, Option <TProp> >(
         JsonUtil.Append,
         x => Pair.Create(x, getter(x)),
         codec.Encoder,
         JsonEncoder.Property(fieldName, JsonEncoder.Nullable(fieldCodec.Encoder)))
     );
Ejemplo n.º 2
0
 /// <summary>
 /// Describes a required object field.
 /// </summary>
 public static Codec <JToken, Pair <TPrev, TProp>, T> Required <T, TPrev, TProp>(
     this Codec <JToken, TPrev, T> codec,
     string fieldName,
     Func <T, TProp> getter,
     Codec <JToken, TProp> fieldCodec) =>
 CreateFree(
     codec.Decoder.Required(fieldName, fieldCodec.Decoder),
     Encoder.Divide <JToken, T, T, TProp>(
         JsonUtil.Append,
         x => Pair.Create(x, getter(x)),
         codec.Encoder,
         JsonEncoder.Property(fieldName, fieldCodec.Encoder))
     );
Ejemplo n.º 3
0
 /// <summary>
 /// Codec for arrays.
 /// </summary>
 public static Codec <JToken, IEnumerable <T> > Array <T>(Codec <JToken, T> elementCodec) => Create(JsonDecoder.Array(elementCodec.Decoder), JsonEncoder.Array(elementCodec.Encoder));
Ejemplo n.º 4
0
 /// <summary>
 /// Codec for optional values.
 /// </summary>
 public static Codec <JToken, Option <T> > Nullable <T>(Codec <JToken, T> valueCodec) => Create(JsonDecoder.Nullable(valueCodec.Decoder), JsonEncoder.Nullable(valueCodec.Encoder));