libobs-source-macro 5.0.1

Helper macro for libobs-sources
Documentation
use syn::{Attribute, Expr};

pub fn collect_doc(attrs: &Vec<Attribute>) -> (Vec<String>, Vec<&Attribute>) {
    let mut docs_str = Vec::new();
    let mut docs_attr = Vec::new();
    for attr in attrs {
        let name_val = match &attr.meta {
            syn::Meta::NameValue(n) => n,
            _ => continue,
        };

        let is_doc = name_val.path.is_ident("doc");
        if !is_doc {
            continue;
        }

        let lit = match &name_val.value {
            Expr::Lit(l) => match &l.lit {
                syn::Lit::Str(s) => s.value(),
                _ => continue,
            },
            _ => continue,
        };

        docs_str.push(lit);
        docs_attr.push(attr);
    }

    (docs_str, docs_attr)
}