#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum SplitBehavior {
#[default]
Isolated,
Removed,
MergedWithPrevious,
MergedWithNext,
Contiguous,
}
impl SplitBehavior {
pub(super) fn parse(s: Option<&str>) -> Self {
match s {
Some("Removed") => SplitBehavior::Removed,
Some("MergedWithPrevious") => SplitBehavior::MergedWithPrevious,
Some("MergedWithNext") => SplitBehavior::MergedWithNext,
Some("Contiguous") => SplitBehavior::Contiguous,
_ => SplitBehavior::Isolated,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum SplitPattern {
Literal(String),
Regex(String),
}
#[non_exhaustive]
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum PreTokStage {
Split {
pattern: SplitPattern,
behavior: SplitBehavior,
invert: bool,
},
ByteLevel {
use_regex: bool,
add_prefix_space: bool,
},
Digits { individual: bool },
Punctuation { behavior: SplitBehavior },
WhitespaceSplit,
Whitespace,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub(super) enum Behavior {
Isolated,
Removed,
MergedWithPrevious,
MergedWithNext,
Contiguous,
}
impl From<SplitBehavior> for Behavior {
fn from(b: SplitBehavior) -> Self {
match b {
SplitBehavior::Isolated => Behavior::Isolated,
SplitBehavior::Removed => Behavior::Removed,
SplitBehavior::MergedWithPrevious => Behavior::MergedWithPrevious,
SplitBehavior::MergedWithNext => Behavior::MergedWithNext,
SplitBehavior::Contiguous => Behavior::Contiguous,
}
}
}