roc/crates/compiler/uitest/tests/solve/stdlib_encode_something.txt
2025-01-05 05:16:47 -08:00

66 lines
2.1 KiB
Text

app "test"
imports []
provides [main] to "./platform"
OnlyStrEncoder := {} implements [Encode.EncoderFormatting {
u8: encodeU8,
u16: encodeU16,
u32: encodeU32,
u64: encodeU64,
u128: encodeU128,
i8: encodeI8,
i16: encodeI16,
i32: encodeI32,
i64: encodeI64,
i128: encodeI128,
f32: encodeF32,
f64: encodeF64,
dec: encodeDec,
bool: encodeBool,
string: encodeString,
list: encodeList,
record: encodeRecord,
tuple: encodeTuple,
tag: encodeTag,
}]
encodeNothing = Encode.custom \bytes, @OnlyStrEncoder {} -> bytes
encodeU8 = \_n -> encodeNothing
encodeU16 = \_n -> encodeNothing
encodeU32 = \_n -> encodeNothing
encodeU64 = \_n -> encodeNothing
encodeU128 = \_n -> encodeNothing
encodeI8 = \_n -> encodeNothing
encodeI16 = \_n -> encodeNothing
encodeI32 = \_n -> encodeNothing
encodeI64 = \_n -> encodeNothing
encodeI128 = \_n -> encodeNothing
encodeF32 = \_n -> encodeNothing
encodeF64 = \_n -> encodeNothing
encodeDec = \_n -> encodeNothing
encodeBool = \_b -> encodeNothing
encodeString = \str -> Encode.custom \bytes, @OnlyStrEncoder {} -> List.concat bytes (Str.to_utf8 str)
encodeList : List elem, (elem -> Encoder OnlyStrEncoder) -> Encoder OnlyStrEncoder
encodeList = \_lst, _encodeElem -> encodeNothing
encodeRecord : List {key: Str, value: Encoder OnlyStrEncoder} -> Encoder OnlyStrEncoder
encodeRecord = \_fields -> encodeNothing
encodeTuple : List (Encoder OnlyStrEncoder) -> Encoder OnlyStrEncoder
encodeTuple = \_elems -> encodeNothing
encodeTag : Str, List (Encoder OnlyStrEncoder) -> Encoder OnlyStrEncoder
encodeTag = \_name, _payload -> encodeNothing
HelloWorld := {} implements [Encoding {to_encoder}]
to_encoder = \@HelloWorld {} ->
Encode.custom \bytes, fmt ->
bytes
|> Encode.append_with (Encode.string "Hello, World!\n") fmt
f =
when Str.from_utf8 (Encode.to_bytes (@HelloWorld {}) (@OnlyStrEncoder {})) is
Ok s -> s
_ -> "<bad>"
main = f
# ^ Str