pub fn turbo_stream_append(target: &str, html: &str) -> String {
format!(
r#"<turbo-stream action="append" target="{}">
<template>{}</template>
</turbo-stream>"#,
target, html
)
}
pub fn turbo_stream_prepend(target: &str, html: &str) -> String {
format!(
r#"<turbo-stream action="prepend" target="{}">
<template>{}</template>
</turbo-stream>"#,
target, html
)
}
pub fn turbo_stream_replace(target: &str, html: &str) -> String {
format!(
r#"<turbo-stream action="replace" target="{}">
<template>{}</template>
</turbo-stream>"#,
target, html
)
}
pub fn turbo_stream_update(target: &str, html: &str) -> String {
format!(
r#"<turbo-stream action="update" target="{}">
<template>{}</template>
</turbo-stream>"#,
target, html
)
}
pub fn turbo_stream_remove(target: &str) -> String {
format!(
r#"<turbo-stream action="remove" target="{}"></turbo-stream>"#,
target
)
}
pub fn turbo_stream_before(target: &str, html: &str) -> String {
format!(
r#"<turbo-stream action="before" target="{}">
<template>{}</template>
</turbo-stream>"#,
target, html
)
}
pub fn turbo_stream_after(target: &str, html: &str) -> String {
format!(
r#"<turbo-stream action="after" target="{}">
<template>{}</template>
</turbo-stream>"#,
target, html
)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_turbo_stream_append() {
let result = turbo_stream_append("notifications", "<div>Hello</div>");
assert!(result.contains(r#"action="append""#));
assert!(result.contains(r#"target="notifications""#));
assert!(result.contains("<div>Hello</div>"));
}
#[test]
fn test_turbo_stream_remove() {
let result = turbo_stream_remove("item-123");
assert!(result.contains(r#"action="remove""#));
assert!(result.contains(r#"target="item-123""#));
}
}