pub const BLOCKED_ALWAYS: [bool; 256] = {
let mut bytes = [false; 256];
bytes[0x00] = true; bytes[0x01] = true; bytes[0x02] = true; bytes[0x03] = true; bytes[0x04] = true; bytes[0x05] = true; bytes[0x06] = true; bytes[0x07] = true; bytes[0x08] = true; bytes[0x09] = true; bytes[0x0A] = true; bytes[0x0B] = true; bytes[0x0C] = true; bytes[0x0D] = true; bytes[0x0E] = true; bytes[0x0F] = true; bytes[0x10] = true; bytes[0x11] = true; bytes[0x12] = true; bytes[0x13] = true; bytes[0x14] = true; bytes[0x15] = true; bytes[0x16] = true; bytes[0x17] = true; bytes[0x18] = true; bytes[0x19] = true; bytes[0x1A] = true; bytes[0x1B] = true; bytes[0x1C] = true; bytes[0x1D] = true; bytes[0x1E] = true; bytes[0x1F] = true; bytes[0x7F] = true; bytes[b'/' as usize] = true;
bytes[0xFF] = true;
#[cfg(feature = "block-colon")]
{
bytes[b':' as usize] = true;
}
#[cfg(feature = "block-backslash")]
{
bytes[b'\\' as usize] = true;
}
#[cfg(feature = "block-quotes")]
{
bytes[b'"' as usize] = true;
bytes[b'\'' as usize] = true;
}
#[cfg(feature = "block-chaining")]
{
bytes[b'&' as usize] = true;
bytes[b';' as usize] = true;
bytes[b'|' as usize] = true;
}
#[cfg(feature = "block-redirection")]
{
bytes[b'|' as usize] = true;
bytes[b'>' as usize] = true;
bytes[b'<' as usize] = true;
}
#[cfg(feature = "block-expansion")]
{
bytes[b'$' as usize] = true;
bytes[b'%' as usize] = true;
bytes[b'*' as usize] = true;
bytes[b'?' as usize] = true;
bytes[b'`' as usize] = true;
}
#[cfg(feature = "block-brackets")]
{
bytes[b'(' as usize] = true;
bytes[b')' as usize] = true;
bytes[b'[' as usize] = true;
bytes[b']' as usize] = true;
}
#[cfg(feature = "block-space")]
{
bytes[b' ' as usize] = true;
}
bytes
};
pub const BLOCKED_INITIAL: [bool; 256] = {
let mut bytes = [false; 256];
bytes[b'-' as usize] = true;
bytes[b'~' as usize] = true;
bytes[b' ' as usize] = true;
bytes
};
pub const BLOCKED_FINAL: [bool; 256] = {
let mut bytes = [false; 256];
bytes[b' ' as usize] = true;
bytes
};