use crate::anon_unions::AnonUnions;
use crate::{pretty_print, super_nodes};
use proc_macro2::TokenStream;
#[derive(Debug, Default, Clone)]
pub struct GeneratedQueryTokens {
pub toplevel: TokenStream,
pub anon_unions: AnonUnions,
}
impl GeneratedQueryTokens {
pub fn new() -> Self {
Self::default()
}
pub fn append_tokens(&mut self, tokens: TokenStream) {
self.toplevel.extend(tokens);
}
pub fn append(&mut self, other: GeneratedQueryTokens) {
self.toplevel.extend(other.toplevel);
self.anon_unions.extend(other.anon_unions);
}
pub fn into_string(self) -> String {
pretty_print(&self.collapse(&super_nodes()))
}
}
impl Extend<GeneratedQueryTokens> for GeneratedQueryTokens {
fn extend<T: IntoIterator<Item = GeneratedQueryTokens>>(&mut self, iter: T) {
for x in iter {
self.append(x)
}
}
}
impl FromIterator<GeneratedQueryTokens> for GeneratedQueryTokens {
fn from_iter<T: IntoIterator<Item = GeneratedQueryTokens>>(iter: T) -> Self {
let mut this = Self::new();
Extend::<GeneratedQueryTokens>::extend(&mut this, iter);
this
}
}