//! /sentance/ use super::*; use futures::StreamExt; pub async fn body(state: State, num: Option, mut output: mpsc::Sender) -> Result<(), gen::GenBodyError> { let string = { let mut chain = state.chain_read(); match num { None => chain.next().await.ok_or_else(gen::GenBodyError::default)?, Some(num) if num < state.config().max_gen_size => {//(0..num).map(|_| chain.generate_str()).join("\n"), let chain = chain.take(num); chain.collect::>().await.join("\n")//TODO: Stream version of JoinStrExt }, _ => return Err(Default::default()), } }; debug!("Taking {:?} from {:?}" ,num, string); let filter = state.outbound_filter(); if let Some(num) = num { for sen in sanitise::Sentance::new_iter(&string).take(num) { output.send(filter.filter_owned(sen.to_owned())).await?; } } else { output.send(filter.filter_owned(match sanitise::Sentance::new_iter(&string) .max_by_key(|x| x.len()) { Some(x) => x, /*#[cold]*/ None => return Ok(()), }.to_owned())).await?; } Ok(()) }