anchor_syn/parser/
docs.rs

1use syn::{Lit::Str, Meta::NameValue};
2
3// returns vec of doc strings
4pub fn parse(attrs: &[syn::Attribute]) -> Option<Vec<String>> {
5    let doc_strings: Vec<String> = attrs
6        .iter()
7        .filter_map(|attr| match attr.parse_meta() {
8            Ok(NameValue(meta)) => {
9                if meta.path.is_ident("doc") {
10                    if let Str(doc) = meta.lit {
11                        let val = doc.value().trim().to_string();
12                        if val.starts_with("CHECK:") {
13                            return None;
14                        }
15                        return Some(val);
16                    }
17                }
18                None
19            }
20            _ => None,
21        })
22        .collect();
23    if doc_strings.is_empty() {
24        None
25    } else {
26        Some(doc_strings)
27    }
28}