code_splitter/sizer/
words.rs

1use crate::error::Result;
2use crate::sizer::Sizer;
3
4/// A marker struct for counting words in code chunks.
5///
6/// ```
7/// use code_splitter::{Splitter, WordCounter};
8///
9/// let lang = tree_sitter_md::language();
10/// let splitter = Splitter::new(lang, WordCounter).unwrap();
11///
12/// let code = b"hello, world!";
13/// let chunks = splitter.split(code).unwrap();
14/// ```
15pub struct WordCounter;
16
17impl Sizer for WordCounter {
18    /// Count the number of words in the given text.
19    fn size(&self, text: &str) -> Result<usize> {
20        Ok(text.split_whitespace().count())
21    }
22}
23
24#[cfg(test)]
25mod tests {
26    use super::*;
27
28    #[test]
29    fn test_size() {
30        let counter = WordCounter;
31        let text = "hello, world!";
32        let size = counter.size(text).unwrap();
33        assert_eq!(size, 2);
34    }
35}