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}