use core::num::NonZeroUsize;
use rama_utils::macros::generate_set_and_with;
#[derive(Clone, Copy, Debug, Default, Eq, Hash, PartialEq)]
pub enum EmptyLineHandling {
ParseAlways,
#[default]
IgnoreEmpty,
IgnoreBlank,
}
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub struct ParseConfig {
pub(crate) empty_line_handling: EmptyLineHandling,
pub(crate) parse_rest: bool,
pub(crate) max_line_bytes: Option<NonZeroUsize>,
}
impl Default for ParseConfig {
fn default() -> Self {
Self {
empty_line_handling: Default::default(),
parse_rest: true,
max_line_bytes: None,
}
}
}
impl ParseConfig {
generate_set_and_with! {
pub fn empty_line_handling(mut self, empty_line_handling: EmptyLineHandling) -> Self {
self.empty_line_handling = empty_line_handling;
self
}
}
generate_set_and_with! {
pub fn parse_rest(mut self, parse_rest: bool) -> Self {
self.parse_rest = parse_rest;
self
}
}
generate_set_and_with! {
pub fn max_line_bytes(mut self, max_line_bytes: Option<NonZeroUsize>) -> Self {
self.max_line_bytes = max_line_bytes;
self
}
}
}