#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub struct Dialect {
line_separators: &'static str,
field_separators: &'static str,
comment_chars: &'static str,
}
impl Default for Dialect {
fn default() -> Self {
RFC4180_DIALECT
}
}
impl Dialect {
pub const fn new(
line_separators: &'static str,
field_separators: &'static str,
comment_chars: &'static str,
) -> Dialect {
Dialect {
line_separators,
field_separators,
comment_chars,
}
}
#[must_use]
pub const fn get_line_separators(&self) -> &str {
self.line_separators
}
#[must_use]
pub const fn get_field_separators(&self) -> &str {
self.field_separators
}
#[must_use]
pub const fn get_comment_chars(&self) -> &str {
self.comment_chars
}
}
pub const RFC4180_DIALECT: Dialect = Dialect::new("\r\n", ",", "#");
pub const EXCEL_DIALECT: Dialect = RFC4180_DIALECT;
pub const UNIX_DIALECT: Dialect = Dialect::new("\n", ",", "#");
pub const UNIX_TAB_DIALECT: Dialect = Dialect::new("\n", "\t", "#");
pub const EXCEL_TAB_DIALECT: Dialect = Dialect::new("\r\n", "\t", "#");
pub const PIPE_FIELD_DIALECT: Dialect = Dialect::new("\n", "|", "#");