code_splitter/sizer/
chars.rs

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