Source code

Revision control

Copy as Markdown

Other Tools

use base64::engine;
pub(crate) const BASE64: engine::GeneralPurpose = engine::GeneralPurpose::new(
&base64::alphabet::STANDARD,
engine::GeneralPurposeConfig::new()
.with_decode_allow_trailing_bits(true)
.with_decode_padding_mode(engine::DecodePaddingMode::Indifferent)
.with_encode_padding(true),
);
const fn is_tchar(c: u8) -> bool {
matches!(
c,
b'!' | b'#'
| b'$'
| b'%'
| b'&'
| b'\''
| b'*'
| b'+'
| b'-'
| b'.'
| b'^'
| b'_'
| b'`'
| b'|'
| b'~'
) || c.is_ascii_alphanumeric()
}
pub(crate) const fn is_allowed_start_token_char(c: u8) -> bool {
c.is_ascii_alphabetic() || c == b'*'
}
pub(crate) const fn is_allowed_inner_token_char(c: u8) -> bool {
is_tchar(c) || c == b':' || c == b'/'
}
pub(crate) const fn is_allowed_start_key_char(c: u8) -> bool {
c.is_ascii_lowercase() || c == b'*'
}
pub(crate) const fn is_allowed_inner_key_char(c: u8) -> bool {
c.is_ascii_lowercase() || c.is_ascii_digit() || matches!(c, b'_' | b'-' | b'*' | b'.')
}