#![no_std]
#![warn(unused_results)]
#[doc(hidden)]
pub use data_encoding_macro_internal::{
internal_decode_array, internal_decode_slice, internal_new_encoding,
};
#[macro_export]
macro_rules! decode_array {
($($arg: tt)*) => {
$crate::internal_decode_array!($($arg)*);
};
}
#[macro_export]
macro_rules! decode_slice {
($($arg: tt)*) => {
$crate::internal_decode_slice!($($arg)*)
};
}
#[macro_export]
macro_rules! new_encoding {
($($arg: tt)*) => {
data_encoding::Encoding::internal_new(&$crate::internal_new_encoding!{ $($arg)* })
};
}
macro_rules! make {
($base: ident $base_array: ident = $ref: ident; $($spec: tt)*) => {
#[macro_export]
macro_rules! $base_array {
($n: tt = $x: tt) => {
$crate::decode_array!(name: $n, input: $x, $($spec)*);
};
}
#[macro_export]
macro_rules! $base {
($x: tt) => {
$crate::decode_slice!(input: $x, $($spec)*)
};
}
#[test]
fn $base() {
assert_eq!(new_encoding!($($spec)*), data_encoding::$ref);
}
};
}
make! {
hexlower hexlower_array = HEXLOWER;
symbols: "0123456789abcdef",
}
make! {
hexlower_permissive hexlower_permissive_array = HEXLOWER_PERMISSIVE;
symbols: "0123456789abcdef",
translate_from: "ABCDEF",
translate_to: "abcdef",
}
make! {
hexupper hexupper_array = HEXUPPER;
symbols: "0123456789ABCDEF",
}
make! {
hexupper_permissive hexupper_permissive_array = HEXUPPER_PERMISSIVE;
symbols: "0123456789ABCDEF",
translate_from: "abcdef",
translate_to: "ABCDEF",
}
make! {
base32 base32_array = BASE32;
symbols: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",
padding: '=',
}
make! {
base32_nopad base32_nopad_array = BASE32_NOPAD;
symbols: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",
}
make! {
base32hex base32hex_array = BASE32HEX;
symbols: "0123456789ABCDEFGHIJKLMNOPQRSTUV",
padding: '=',
}
make! {
base32hex_nopad base32hex_nopad_array = BASE32HEX_NOPAD;
symbols: "0123456789ABCDEFGHIJKLMNOPQRSTUV",
}
make! {
base32_dnssec base32_dnssec_array = BASE32_DNSSEC;
symbols: "0123456789abcdefghijklmnopqrstuv",
translate_from: "ABCDEFGHIJKLMNOPQRSTUV",
translate_to: "abcdefghijklmnopqrstuv",
}
make! {
base32_dnscurve base32_dnscurve_array = BASE32_DNSCURVE;
symbols: "0123456789bcdfghjklmnpqrstuvwxyz",
bit_order: LeastSignificantFirst,
translate_from: "BCDFGHJKLMNPQRSTUVWXYZ",
translate_to: "bcdfghjklmnpqrstuvwxyz",
}
make! {
base64 base64_array = BASE64;
symbols: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
padding: '=',
}
make! {
base64_nopad base64_nopad_array = BASE64_NOPAD;
symbols: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
}
make! {
base64_mime base64_mime_array = BASE64_MIME;
symbols: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
padding: '=',
wrap_width: 76,
wrap_separator: "\r\n",
}
make! {
base64_mime_permissive base64_mime_permissive_array = BASE64_MIME_PERMISSIVE;
symbols: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
padding: '=',
wrap_width: 76,
wrap_separator: "\r\n",
check_trailing_bits: false,
}
make! {
base64url base64url_array = BASE64URL;
symbols: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",
padding: '=',
}
make! {
base64url_nopad base64url_nopad_array = BASE64URL_NOPAD;
symbols: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",
}