-module(apiculture@encoding). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/apiculture/encoding.gleam"). -export([encode/2, decode/2, uses_padding/1, name/1, hex_lower/0, hex_upper/0, base32_rfc/0, base32_rfc_unpadded/0, base32_hex/0, base32_crockford/0, base32_z/0, base36/0, base58/0, base62/0, base64/0, base64_url/0]). -export_type([encoding/0]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. -type encoding() :: {encoding, yabase@core@encoding:encoding(), boolean()}. -file("src/apiculture/encoding.gleam", 16). ?DOC(" Encode bytes to string using the given encoding.\n"). -spec encode(encoding(), bitstring()) -> binary(). encode(Encoding, Bytes) -> case yabase@core@encoding:encode(erlang:element(2, Encoding), Bytes) of {ok, S} -> S; {error, _} -> erlang:error(#{gleam_error => panic, message => <<"yabase encode failed unexpectedly"/utf8>>, file => <>, module => <<"apiculture/encoding"/utf8>>, function => <<"encode"/utf8>>, line => 19}) end. -file("src/apiculture/encoding.gleam", 24). ?DOC(" Decode string to bytes using the given encoding.\n"). -spec decode(encoding(), binary()) -> {ok, bitstring()} | {error, apiculture@error:error()}. decode(Encoding, Input) -> case yabase@core@encoding:decode_as(erlang:element(2, Encoding), Input) of {ok, Bytes} -> {ok, Bytes}; {error, {invalid_character, _, _}} -> {error, malformed_input}; {error, {invalid_length, _}} -> {error, malformed_input}; {error, {unsupported_prefix, _}} -> {error, malformed_input}; {error, {unsupported_multibase_encoding, _}} -> {error, malformed_input}; {error, invalid_checksum} -> {error, malformed_input}; {error, {invalid_hrp, _}} -> {error, malformed_input}; {error, overflow} -> {error, malformed_input}; {error, non_canonical} -> {error, malformed_input}; {error, {negative_value, _}} -> {error, malformed_input}; {error, {unsupported_for_int, _}} -> {error, malformed_input} end. -file("src/apiculture/encoding.gleam", 42). ?DOC(" Returns whether the encoding uses padding.\n"). -spec uses_padding(encoding()) -> boolean(). uses_padding(Encoding) -> erlang:element(3, Encoding). -file("src/apiculture/encoding.gleam", 47). ?DOC(" Returns the name of the encoding.\n"). -spec name(encoding()) -> binary(). name(Encoding) -> yabase@core@encoding:multibase_name(erlang:element(2, Encoding)). -file("src/apiculture/encoding.gleam", 56). ?DOC(" Lowercase hexadecimal encoding.\n"). -spec hex_lower() -> encoding(). hex_lower() -> {encoding, yabase@core@encoding:base16(), false}. -file("src/apiculture/encoding.gleam", 61). ?DOC(" Uppercase hexadecimal encoding.\n"). -spec hex_upper() -> encoding(). hex_upper() -> {encoding, yabase@core@encoding:base16(), false}. -file("src/apiculture/encoding.gleam", 66). ?DOC(" RFC 4648 Base32 encoding (padded variant).\n"). -spec base32_rfc() -> encoding(). base32_rfc() -> {encoding, yabase@core@encoding:base32_rfc4648(), true}. -file("src/apiculture/encoding.gleam", 71). ?DOC(" RFC 4648 Base32 encoding (unpadded variant).\n"). -spec base32_rfc_unpadded() -> encoding(). base32_rfc_unpadded() -> {encoding, yabase@core@encoding:base32_rfc4648(), false}. -file("src/apiculture/encoding.gleam", 76). ?DOC(" Base32hex encoding.\n"). -spec base32_hex() -> encoding(). base32_hex() -> {encoding, yabase@core@encoding:base32_hex(), true}. -file("src/apiculture/encoding.gleam", 81). ?DOC(" Crockford's Base32 encoding.\n"). -spec base32_crockford() -> encoding(). base32_crockford() -> {encoding, yabase@core@encoding:base32_crockford(), false}. -file("src/apiculture/encoding.gleam", 86). ?DOC(" z-base-32 encoding.\n"). -spec base32_z() -> encoding(). base32_z() -> {encoding, yabase@core@encoding:base32_z_base32(), false}. -file("src/apiculture/encoding.gleam", 91). ?DOC(" Base36 encoding (lowercase).\n"). -spec base36() -> encoding(). base36() -> {encoding, yabase@core@encoding:base36(), false}. -file("src/apiculture/encoding.gleam", 96). ?DOC(" Base58 encoding (Bitcoin alphabet).\n"). -spec base58() -> encoding(). base58() -> {encoding, yabase@core@encoding:base58_bitcoin(), false}. -file("src/apiculture/encoding.gleam", 101). ?DOC(" Base62 encoding.\n"). -spec base62() -> encoding(). base62() -> {encoding, yabase@core@encoding:base62(), false}. -file("src/apiculture/encoding.gleam", 106). ?DOC(" Standard Base64 encoding.\n"). -spec base64() -> encoding(). base64() -> {encoding, yabase@core@encoding:base64_standard(), true}. -file("src/apiculture/encoding.gleam", 111). ?DOC(" Base64URL encoding (URL-safe).\n"). -spec base64_url() -> encoding(). base64_url() -> {encoding, yabase@core@encoding:base64_url_safe(), true}.