wagon_codegen/nodes/
conjunct.rs

1use wagon_parser::parser::conjunct::Conjunct;
2use crate::SpannableIdent;
3
4use super::{Rc, ToTokensState};
5use proc_macro2::{TokenStream, Ident};
6use quote::quote;
7
8impl<U> ToTokensState<U> for Conjunct {
9    fn to_tokens(&self, state: &mut U, label: Rc<Ident>, attr_fun: fn(&mut U, Rc<Ident>, SpannableIdent)) -> TokenStream {
10        let i = &self.0;
11        if i.len() > 1 {
12            let stream: Vec<TokenStream> = i.iter().map(|x| x.to_tokens(state, label.clone(), attr_fun)).collect();
13            quote!(
14                #(wagon_value::Valueable::is_truthy(&#stream)?) ||*
15            )
16        } else {
17            i[0].to_tokens(state, label, attr_fun)
18        }
19    }
20}