package moe.nea.pcj.json; import moe.nea.pcj.Result; public class BasicCodecs { protected BasicCodecs() {} public static BasicCodecs create() { return new BasicCodecs<>(); } public final JsonCodec STRING = new JsonCodec<>() { @Override public Result decode(Format format, JsonLikeOperations ops) { return ops.getString(format); } @Override public Result encode(String data, JsonLikeOperations ops) { return Result.ok(ops.createString(data)); } }; public final JsonCodec FLOAT = new JsonCodec() { @Override public Result decode(Format format, JsonLikeOperations ops) { return ops.getNumeric(format).map(Number::floatValue); } @Override public Result encode(Float data, JsonLikeOperations ops) { return Result.ok(ops.createNumeric(data)); } }; public final JsonCodec INTEGER = new JsonCodec<>() { @Override public Result decode(Format format, JsonLikeOperations ops) { return ops.getNumeric(format).map(Number::intValue); // TODO: filter for valid ints } @Override public Result encode(Integer data, JsonLikeOperations ops) { return Result.ok(ops.createNumeric(data)); } }; }