libobs_source_macro/
docs.rs

1use 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}