use serde::{Deserialize, Serialize};
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum Direction {
Above,
Below,
Left,
Right,
}
impl Direction {
#[must_use]
pub const fn orientation(self) -> SplitOrientation {
match self {
Self::Above | Self::Below => SplitOrientation::Horizontal,
Self::Left | Self::Right => SplitOrientation::Vertical,
}
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum SplitOrientation {
Horizontal,
Vertical,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn direction_orientation_matches_tmux_semantics() {
assert_eq!(Direction::Above.orientation(), SplitOrientation::Horizontal);
assert_eq!(Direction::Below.orientation(), SplitOrientation::Horizontal);
assert_eq!(Direction::Left.orientation(), SplitOrientation::Vertical);
assert_eq!(Direction::Right.orientation(), SplitOrientation::Vertical);
}
}