use sql_dialect_fmt_syntax::Dialect;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct BodyDelimiter {
pub name: &'static str,
pub opener: &'static str,
pub closer: &'static str,
}
impl BodyDelimiter {
pub const fn symmetric(name: &'static str, delimiter: &'static str) -> Self {
BodyDelimiter {
name,
opener: delimiter,
closer: delimiter,
}
}
pub const fn paired(name: &'static str, opener: &'static str, closer: &'static str) -> Self {
BodyDelimiter {
name,
opener,
closer,
}
}
}
pub const DOLLAR_QUOTED_BODY: BodyDelimiter = BodyDelimiter::symmetric("dollar-quoted body", "$$");
pub const DEFAULT_BODY_DELIMITERS: &[BodyDelimiter] = &[DOLLAR_QUOTED_BODY];
#[derive(Clone, Copy, Debug)]
pub struct LexOptions<'cfg> {
pub body_delimiters: &'cfg [BodyDelimiter],
pub dialect: Dialect,
}
impl Default for LexOptions<'static> {
fn default() -> Self {
LexOptions {
body_delimiters: DEFAULT_BODY_DELIMITERS,
dialect: Dialect::default(),
}
}
}
impl<'cfg> LexOptions<'cfg> {
#[must_use]
pub fn with_dialect(mut self, dialect: Dialect) -> Self {
self.dialect = dialect;
self
}
}