use regex::Regex;
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub enum Charset {
#[default]
Utf8,
Iso88591,
}
impl Charset {
pub(crate) const UTF8_SENTINEL: &str = "utf8=%E2%9C%93";
pub(crate) const ISO_SENTINEL: &str = "utf8=%26%2310003%3B";
pub(crate) fn sentinel(self) -> &'static str {
match self {
Self::Utf8 => Self::UTF8_SENTINEL,
Self::Iso88591 => Self::ISO_SENTINEL,
}
}
}
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub enum Format {
#[default]
Rfc3986,
Rfc1738,
}
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub enum ListFormat {
#[default]
Indices,
Brackets,
Repeat,
Comma,
}
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub enum Duplicates {
#[default]
Combine,
First,
Last,
}
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub enum SortMode {
#[default]
Preserve,
LexicographicAsc,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum DecodeKind {
Key,
Value,
}
#[derive(Clone, Debug)]
pub enum Delimiter {
String(String),
Regex(Regex),
}
impl Default for Delimiter {
fn default() -> Self {
Self::String("&".to_owned())
}
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum WhitelistSelector {
Key(String),
Index(usize),
}