44 lines
991 B
Scala
44 lines
991 B
Scala
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
|