chunked-quote 0.1.8

quote using only one TokenStream
Documentation
//! [`quote`] using only one [`TokenStream`](proc_macro2::TokenStream).
//!
//! this crate provide a [`quote`] inspired macro [`chunk!`] that builds [`TokenStream`](proc_macro2::TokenStream)s though direct appending not object composition.
//!
//! it support all [`quote`] features except `macro_rules` inspired repetetion, and add additional features like control flow and do blocks.

pub use chunked_quote_impl::{chunk, chunk_spanned, quote, quote_spanned};

#[doc(hidden)]
pub mod __private {
	use std::str::FromStr;

	pub use proc_macro2::{
		Delimiter::{self, *},
		Group, Ident, Literal, Punct, Spacing, Span, TokenStream, TokenTree,
	};
	pub use quote::ToTokens;

	pub trait TokenStreamExt {
		fn __push_ident(&mut self, ident: &str, span: Span);
		fn __push_ident_raw(&mut self, ident: &str, span: Span);
		fn __push_punct_alone(&mut self, punct: char, span: Span);
		fn __push_punct_joint(&mut self, punct: char, span: Span);
		fn __push_literal(&mut self, literal: &str, span: Span);
		fn __push_group(&mut self, delim: Delimiter, span: Span, stream: TokenStream);
	}
	impl TokenStreamExt for TokenStream {
		fn __push_ident(&mut self, ident: &str, span: Span) {
			self.extend(Some(Ident::new(ident, span)));
		}
		fn __push_ident_raw(&mut self, ident: &str, span: Span) {
			self.extend(Some(Ident::new_raw(ident, span)));
		}
		fn __push_punct_alone(&mut self, punct: char, span: Span) {
			let mut punct = Punct::new(punct, Spacing::Alone);
			punct.set_span(span);
			self.extend(Some(punct));
		}
		fn __push_punct_joint(&mut self, punct: char, span: Span) {
			let mut punct = Punct::new(punct, Spacing::Joint);
			punct.set_span(span);
			self.extend(Some(punct));
		}
		fn __push_literal(&mut self, literal: &str, span: Span) {
			let mut literal = Literal::from_str(literal).unwrap();
			literal.set_span(span);
			self.extend(Some(literal));
		}
		fn __push_group(&mut self, delim: Delimiter, span: Span, stream: TokenStream) {
			let mut group = Group::new(delim, stream);
			group.set_span(span);
			self.extend(Some(group));
		}
	}
}