llm_utils 0.0.11

The best possible text chunker and text splitter and other text tools
Documentation
#[derive(Clone, PartialEq, Debug, Default)]
pub enum TextConcatenator {
    DoubleNewline,
    #[default]
    SingleNewline,
    Space,
    Comma,
    Custom(String),
}

impl TextConcatenator {
    pub fn as_str(&self) -> &str {
        match self {
            TextConcatenator::DoubleNewline => "\n\n",
            TextConcatenator::SingleNewline => "\n",
            TextConcatenator::Space => " ",
            TextConcatenator::Comma => ", ",
            TextConcatenator::Custom(custom) => custom,
        }
    }
}

pub trait TextConcatenatorTrait {
    fn concatenator_mut(&mut self) -> &mut TextConcatenator;

    fn clear_built(&self);

    fn concate_deol(&mut self) -> &mut Self {
        if self.concatenator_mut() != &TextConcatenator::DoubleNewline {
            *self.concatenator_mut() = TextConcatenator::DoubleNewline;
            self.clear_built();
        }
        self
    }

    fn concate_seol(&mut self) -> &mut Self {
        if self.concatenator_mut() != &TextConcatenator::SingleNewline {
            *self.concatenator_mut() = TextConcatenator::SingleNewline;
            self.clear_built();
        }
        self
    }

    fn concate_space(&mut self) -> &mut Self {
        if self.concatenator_mut() != &TextConcatenator::Space {
            *self.concatenator_mut() = TextConcatenator::Space;
            self.clear_built();
        }
        self
    }

    fn concate_comma(&mut self) -> &mut Self {
        if self.concatenator_mut() != &TextConcatenator::Comma {
            *self.concatenator_mut() = TextConcatenator::Comma;
            self.clear_built();
        }
        self
    }

    fn concate_custom<T: AsRef<str>>(&mut self, custom: T) -> &mut Self {
        if self.concatenator_mut() != &TextConcatenator::Custom(custom.as_ref().to_owned()) {
            *self.concatenator_mut() = TextConcatenator::Custom(custom.as_ref().to_owned());
            self.clear_built();
        }
        self
    }
}