#[derive(Debug, Clone, Default)]
pub struct Keywords {
pub keywords: Vec<String>,
}
impl Keywords {
#[must_use]
pub fn new() -> Self {
Self::default()
}
pub fn add(&mut self, keyword: impl Into<String>) {
self.keywords.push(keyword.into());
}
#[must_use]
pub fn len(&self) -> usize {
self.keywords.len()
}
#[must_use]
pub fn is_empty(&self) -> bool {
self.keywords.is_empty()
}
#[must_use]
pub fn to_string_joined(&self) -> String {
self.keywords.join(",")
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn keywords_new() {
let k = Keywords::new();
assert!(k.is_empty());
}
#[test]
fn keywords_add() {
let mut k = Keywords::new();
k.add("OFD");
k.add("PDF");
assert_eq!(k.len(), 2);
}
#[test]
fn keywords_to_string_joined() {
let mut k = Keywords::new();
k.add("A");
k.add("B");
assert_eq!(k.to_string_joined(), "A,B");
}
}