#![doc = include_str!("readme.md")]
use oak_core::{Language, LanguageCategory};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct SqlLanguage {
pub case_sensitive: bool,
pub quoted_identifiers: bool,
pub backtick_identifiers: bool,
pub bracket_identifiers: bool,
}
impl SqlLanguage {
pub fn new() -> Self {
Self::default()
}
pub fn standard() -> Self {
Self::default()
}
pub fn mysql() -> Self {
Self { case_sensitive: false, quoted_identifiers: true, backtick_identifiers: true, bracket_identifiers: false }
}
pub fn postgresql() -> Self {
Self { case_sensitive: false, quoted_identifiers: true, backtick_identifiers: false, bracket_identifiers: false }
}
pub fn sqlite() -> Self {
Self {
case_sensitive: false,
quoted_identifiers: true,
backtick_identifiers: true, bracket_identifiers: true, }
}
pub fn sqlserver() -> Self {
Self { case_sensitive: false, quoted_identifiers: true, backtick_identifiers: false, bracket_identifiers: true }
}
}
impl Default for SqlLanguage {
fn default() -> Self {
Self { case_sensitive: false, quoted_identifiers: true, backtick_identifiers: false, bracket_identifiers: false }
}
}
impl Language for SqlLanguage {
const NAME: &'static str = "sql";
const CATEGORY: LanguageCategory = LanguageCategory::Dsl;
type TokenType = crate::lexer::token_type::SqlTokenType;
type ElementType = crate::parser::element_type::SqlElementType;
type TypedRoot = crate::ast::SqlRoot;
}