package gs.std.v0 import java.nio.charset.Charset import java.nio.charset.StandardCharsets /** Interface for byte encoding to String formats. */ trait Encoder[+A <: EncodedString]: /** Encode an array of bytes as a string. * * @param input * The bytes to encode. * @return * The encoded string. */ def encode(input: Array[Byte]): A /** Encode a string as a string. * * @param input * The string to encode. * @param charset * The character set of the input string. * @return * The encoded string. */ def encode( input: String, charset: Charset = StandardCharsets.UTF_8 ): A = encode(input.getBytes(charset)) object Encoder: /** @return * The [[Base64Encoder]], typed to `Encoder[Encoded]`. */ def base64(): Encoder[EncodedString] = Base64Encoder /** @return * The [[HexEncoder]], typed to `Encoder[Encoded]`. */ def hex(): Encoder[EncodedString] = HexEncoder end Encoder