Introduce #[css(if_empty = "…", iterable)]

This commit is contained in:
Anthony Ramine 2018-03-07 13:07:13 +01:00
parent 92f116a95c
commit 90b23963b7
4 changed files with 48 additions and 80 deletions

View file

@ -150,6 +150,20 @@ fn derive_single_field_expr(
where_clause: &mut WhereClause,
) -> Tokens {
if attrs.iterable {
if let Some(if_empty) = attrs.if_empty {
return quote! {
{
let mut iter = #field.iter().peekable();
if iter.peek().is_none() {
writer.item(&::style_traits::values::Verbatim(#if_empty))?;
} else {
for item in iter {
writer.item(&item)?;
}
}
}
};
}
quote! {
for item in #field.iter() {
writer.item(&item)?;
@ -186,6 +200,7 @@ pub struct CssVariantAttrs {
#[darling(attributes(css), default)]
#[derive(Default, FromField)]
struct CssFieldAttrs {
if_empty: Option<String>,
ignore_bound: bool,
iterable: bool,
skip: bool,