libobs_source_macro/
docs.rs1use syn::{Attribute, Expr};
2
3pub fn collect_doc(attrs: &Vec<Attribute>) -> (Vec<String>, Vec<&Attribute>) {
4 let mut docs_str = Vec::new();
5 let mut docs_attr = Vec::new();
6 for attr in attrs {
7 let name_val = match &attr.meta {
8 syn::Meta::NameValue(n) => n,
9 _ => continue,
10 };
11
12 let is_doc = name_val.path.is_ident("doc");
13 if !is_doc {
14 continue;
15 }
16
17 let lit = match &name_val.value {
18 Expr::Lit(l) => match &l.lit {
19 syn::Lit::Str(s) => s.value(),
20 _ => continue,
21 },
22 _ => continue,
23 };
24
25 docs_str.push(lit);
26 docs_attr.push(attr);
27 }
28
29 (docs_str, docs_attr)
30}