macro_rules! edit_event {
($doc:expr, $index:expr, $text:expr) => { ... };
($doc:expr, $index:expr, $($field:ident = $value:expr),+ $(,)?) => { ... };
(@field $builder:expr, text, $value:expr) => { ... };
(@field $builder:expr, start, $value:expr) => { ... };
(@field $builder:expr, end, $value:expr) => { ... };
(@field $builder:expr, speaker, $value:expr) => { ... };
(@field $builder:expr, style, $value:expr) => { ... };
(@field $builder:expr, layer, $value:expr) => { ... };
(@field $builder:expr, effect, $value:expr) => { ... };
}Expand description
Macro for editing events with multiple field updates
Supports both simple text editing and complex field updates:
edit_event!(doc, index, "new text")- Simple text replacementedit_event!(doc, index, text = "new", start = "0:00:05.00", end = "0:00:10.00")- Multi-field
ยงExamples
use ass_editor::{EditorDocument, edit_event};
let content = "[Events]\nDialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,Old text";
let mut doc = EditorDocument::from_content(content).unwrap();
// Edit event using the macro - this updates the text field
edit_event!(doc, 0, |event| {
vec![("text", "New dialogue text".to_string())]
}).unwrap();
assert!(doc.text().contains("New dialogue text"));