pub mod char;
use melodium_core::*;
use melodium_macro::{check, mel_function, mel_treatment};
#[mel_treatment(
input text Stream<string>
output matches Stream<bool>
)]
pub async fn exact(pattern: string) {
while let Ok(text) = text.recv_string().await {
check!(
matches
.send_bool(text.into_iter().map(|txt| txt == pattern).collect())
.await
);
}
}
#[mel_function]
pub fn exact(text: string, pattern: string) -> bool {
text == pattern
}
#[mel_treatment(
input text Stream<string>
output matches Stream<bool>
)]
pub async fn starts_with(pattern: string) {
while let Ok(text) = text.recv_string().await {
check!(
matches
.send_bool(
text.into_iter()
.map(|txt| txt.starts_with(&pattern))
.collect()
)
.await
);
}
}
#[mel_function]
pub fn starts_with(text: string, pattern: string) -> bool {
text.starts_with(&pattern)
}
#[mel_treatment(
input text Stream<string>
output matches Stream<bool>
)]
pub async fn ends_with(pattern: string) {
while let Ok(text) = text.recv_string().await {
check!(
matches
.send_bool(
text.into_iter()
.map(|txt| txt.ends_with(&pattern))
.collect()
)
.await
);
}
}
#[mel_function]
pub fn ends_with(text: string, pattern: string) -> bool {
text.ends_with(&pattern)
}