Skip to main content

easyofd_core/doc/
keywords.rs

1//! 文档关键词。
2//!
3//! 对应 Java: org.ofdrw.core.basicStructure.ofd.docInfo.Keywords
4
5/// 文档关键词。
6///
7/// 对应 Java: org.ofdrw.core.basicStructure.ofd.docInfo.Keywords
8#[derive(Debug, Clone, Default)]
9pub struct Keywords {
10    /// 关键词列表。
11    pub keywords: Vec<String>,
12}
13
14impl Keywords {
15    /// 创建空关键词列表。
16    #[must_use]
17    pub fn new() -> Self {
18        Self::default()
19    }
20
21    /// 添加关键词。
22    pub fn add(&mut self, keyword: impl Into<String>) {
23        self.keywords.push(keyword.into());
24    }
25
26    /// 获取关键词数量。
27    #[must_use]
28    pub fn len(&self) -> usize {
29        self.keywords.len()
30    }
31
32    /// 是否为空。
33    #[must_use]
34    pub fn is_empty(&self) -> bool {
35        self.keywords.is_empty()
36    }
37
38    /// 序列化为逗号分隔的字符串。
39    #[must_use]
40    pub fn to_string_joined(&self) -> String {
41        self.keywords.join(",")
42    }
43}
44
45#[cfg(test)]
46mod tests {
47    use super::*;
48
49    #[test]
50    fn keywords_new() {
51        let k = Keywords::new();
52        assert!(k.is_empty());
53    }
54
55    #[test]
56    fn keywords_add() {
57        let mut k = Keywords::new();
58        k.add("OFD");
59        k.add("PDF");
60        assert_eq!(k.len(), 2);
61    }
62
63    #[test]
64    fn keywords_to_string_joined() {
65        let mut k = Keywords::new();
66        k.add("A");
67        k.add("B");
68        assert_eq!(k.to_string_joined(), "A,B");
69    }
70}