1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
use syn::{AttributeArgs, Lit, Meta, NestedMeta};

/// Attempts to parse `function = "name"` for the `bash_builtin` attribute macro.
pub fn parse_named_function(args: &AttributeArgs) -> Option<String> {
    for arg in args {
        match arg {
            NestedMeta::Meta(Meta::NameValue(v)) => {
                if v.path.is_ident("function") {
                    return match &v.lit {
                        Lit::Str(s) => Some(s.value()),
                        _ => None, // FIXME: Report an error somehow.
                    };
                }
            }
            _ => {}
        }
    }

    None
}