//! A terminal related ANSI escape sequences.

sequence!(
    /// Resizes the text area to the given width and height in characters.
    ///
    /// # Examples
    ///
    /// ```no_run
    /// use std::io::{stdout, Write};
    /// use anes::ResizeTextArea;
    ///
    /// let mut stdout = stdout();
    /// // Resize the terminal to 80x25
    /// write!(stdout, "{}", ResizeTextArea(80, 25));
    /// ```
    struct ResizeTextArea(u16, u16) =>
    |this, f| write!(f, csi!("8;{};{}t"), this.1, this.0)
);

sequence!(
    /// Tells the terminal to start reporting mouse events.
    ///
    /// Mouse events are not reported by default.
    struct EnableMouseEvents => concat!(
        csi!("?1000h"),
        csi!("?1002h"),
        csi!("?1015h"),
        csi!("?1006h")
    )
);

sequence!(
    /// Tells the terminal to stop reporting mouse events.
    struct DisableMouseEvents => concat!(
        csi!("?1006l"),
        csi!("?1015l"),
        csi!("?1002l"),
        csi!("?1000l")
    )
);

#[cfg(test)]
test_sequences!(
    resize_text_area(
        ResizeTextArea(80, 25) => "\x1B[8;25;80t",
        ResizeTextArea(1, 1) => "\x1B[8;1;1t",
    ),
    enable_mouse_events(
        EnableMouseEvents => "\x1B[?1000h\x1B[?1002h\x1B[?1015h\x1B[?1006h",
    ),
    disable_mouse_events(
        DisableMouseEvents => "\x1B[?1006l\x1B[?1015l\x1B[?1002l\x1B[?1000l",
    )
);
