use crate::initial_paragraph_splitter::InitialParagraphSplitter;
use std::vec::IntoIter;
use crate::SegmentedToken;
use crate::UseOrSubdivide;
use crate::segmentation::Segmenter;
#[derive(Debug, Clone, Default)]
pub struct NaiveWordSplitter {}
impl NaiveWordSplitter {
pub fn new() -> Self {
Default::default()
}
}
impl Segmenter for NaiveWordSplitter {
type SubdivisionIter<'a> = IntoIter<SegmentedToken<'a>>;
fn subdivide<'a>(
&self,
token: SegmentedToken<'a>,
) -> UseOrSubdivide<SegmentedToken<'a>, IntoIter<SegmentedToken<'a>>> {
let mut output: Vec<SegmentedToken<'a>> = Vec::new();
for fragment in InitialParagraphSplitter::new(token.text) {
let mut new_token = SegmentedToken::new_derived_from(fragment.text, &token);
new_token.kind = fragment.kind;
output.push(fragment);
}
return UseOrSubdivide::Subdivide(output.into_iter());
}
}