use crate::{DatumComposePipe, DatumDecoder, DatumPipeTokenizer, DatumUTF8Decoder};
#[cfg(feature = "alloc")]
use alloc::string::String;
#[cfg(feature = "alloc")]
use crate::{DatumParser, DatumPipe, DatumToken, DatumValue};
pub type DatumCharToTokenPipeline<B> = DatumComposePipe<DatumDecoder, DatumPipeTokenizer<B>>;
pub type DatumByteToTokenPipeline<B> =
DatumComposePipe<DatumUTF8Decoder, DatumCharToTokenPipeline<B>>;
#[cfg(feature = "alloc")]
pub fn datum_byte_to_token_pipeline() -> impl DatumPipe<Input = u8, Output = DatumToken<String>> {
DatumByteToTokenPipeline::default()
}
#[cfg(feature = "alloc")]
pub fn datum_char_to_token_pipeline() -> impl DatumPipe<Input = char, Output = DatumToken<String>> {
DatumCharToTokenPipeline::default()
}
#[cfg(feature = "alloc")]
pub fn datum_byte_to_value_pipeline() -> impl DatumPipe<Input = u8, Output = DatumValue> {
let tokenizer = datum_byte_to_token_pipeline();
DatumComposePipe(tokenizer, DatumParser::default())
}
#[cfg(feature = "alloc")]
pub fn datum_char_to_value_pipeline() -> impl DatumPipe<Input = char, Output = DatumValue> {
let tokenizer = datum_char_to_token_pipeline();
DatumComposePipe(tokenizer, DatumParser::default())
}