edit_event

Macro edit_event 

Source
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 replacement
  • edit_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"));