wagon_codegen/nodes/
conjunct.rs1use 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}