rocket_codegen 0.2.10

Code generation for the Rocket web framework.
use syntax::ast::{LitKind, NestedMetaItem, MetaItemKind, Lit};
use syntax::symbol::Symbol;

pub trait MetaItemExt {
    fn name_value(&self) -> Option<(&Symbol, &Lit)>;
    fn str_lit(&self) -> Option<&Symbol>;
    fn int_lit(&self) -> Option<u128>;
}

impl MetaItemExt for NestedMetaItem {
    fn name_value(&self) -> Option<(&Symbol, &Lit)> {
        self.meta_item().and_then(|mi| match mi.node {
            MetaItemKind::NameValue(ref l) => Some((&mi.name, l)),
            _ => None,
        })
    }

    fn str_lit(&self) -> Option<&Symbol> {
        self.literal().and_then(|lit| match lit.node {
            LitKind::Str(ref s, _) => Some(s),
            _ => None,
        })
    }

    fn int_lit(&self) -> Option<u128> {
        self.literal().and_then(|lit| match lit.node {
            LitKind::Int(n, _) => Some(n),
            _ => None,
        })
    }
}