pub fn tokens(text: &str) -> Vec<String> {
text.to_lowercase()
.split(|c: char| !c.is_alphanumeric())
.filter(|t| !t.is_empty())
.map(String::from)
.collect()
}
#[cfg(test)]
mod tests {
use super::tokens;
#[test]
fn splits_any_script_on_punctuation() {
assert_eq!(
tokens("What did Caroline say?").join(" "),
"what did caroline say"
);
assert_eq!(
tokens("Какво решихме за базата?").join(" "),
"какво решихме за базата"
);
assert_eq!(
tokens("Přišel jsem, viděl jsem").join(" "),
"přišel jsem viděl jsem"
);
assert!(tokens("?!").is_empty());
}
}