Skip to content

Commit

Permalink
Temporary commit for development on another machine
Browse files Browse the repository at this point in the history
  • Loading branch information
sarub0b0 committed Aug 9, 2024
1 parent a8c3ae8 commit 47eee38
Show file tree
Hide file tree
Showing 3 changed files with 235 additions and 0 deletions.
90 changes: 90 additions & 0 deletions example/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
version: "1"

# fg_color: name | hex | integer
# bg_color: name | hex | integer
# modifier: "bold" | "dim" | "italic" | "underlined" | "slow_blink" | "rapid_blink" | "reversed" | "hidden" | "crossed_out"

theme:
tab:
divider: "|"
base:
fg_color: darkgray
bg_color: default
modifier: reversed
active:
fg_color: default
bg_color: default
modifier: reversed
mouse_over:
fg_color: green
bg_color: default
modifier: reversed
# context:
# fg_color: default
# bg_color: default
# modifier: none
# component:
# title:
# fg_color: default
# bg_color: default
# modifier: none
# border:
# active:
# fg_color: default
# bg_color: default
# modifier: none
# inactive:
# fg_color: default
# bg_color: default
# modifier: none
# mouse_over:
# fg_color: default
# bg_color: default
# modifier: none
# body:
# fg_color: default
# bg_color: default
# pod:
# table_header:
# fg_color: default
# bg_color: default
# modifier: none
# job_pod:
# fg_color: default
# bg_color: default
# modifier: none
# error_pod:
# fg_color: default
# bg_color: default
# modifier: none
# event:
# summary:
# fg_color: default
# bg_color: default
# modifier: none
# message:
# fg_color: default
# bg_color: default
# modifier: none
# list:
# resouce:
# fg_color: default
# bg_color: default
# modifier: none
# table_header:
# fg_color: default
# bg_color: default
# modifier: none
# table_item:
# fg_color: default
# bg_color: default
# modifier: none

# system:
# event:
# polling_interval: 5
#
# keybinding:
# up:
# - "up"
# - "k"
141 changes: 141 additions & 0 deletions src/theme/component.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
use serde::{Deserialize, Serialize};

use super::{FocusableThemeStyle, ThemeStyle};

/// コンポーネントのテーマ
#[derive(Default, Debug, Clone, PartialEq, Eq, Deserialize, Serialize)]
pub struct ComponentTheme {
pub title: ThemeStyle,

pub border: FocusableThemeStyle,

pub body: ThemeStyle,
}

#[cfg(test)]
mod tests {
use super::*;

use indoc::indoc;
use pretty_assertions::assert_eq;
use ratatui::style::{Color, Modifier};

#[test]
fn default_event_theme() {
let actual = ComponentTheme::default();

let expected = ComponentTheme {
title: ThemeStyle::default(),
border: FocusableThemeStyle::default(),
body: ThemeStyle::default(),
};

assert_eq!(actual, expected);
}

#[test]
fn test_serialize_event_theme() {
let theme = ComponentTheme {
title: ThemeStyle {
fg_color: Color::Red,
bg_color: Color::Blue,
modifier: Modifier::BOLD,
},
border: FocusableThemeStyle {
active: ThemeStyle {
fg_color: Color::Green,
bg_color: Color::Yellow,
modifier: Modifier::ITALIC,
},
inactive: ThemeStyle {
fg_color: Color::DarkGray,
bg_color: Color::default(),
modifier: Modifier::default(),
},
mouse_over: ThemeStyle::default(),
},
body: ThemeStyle {
fg_color: Color::Blue,
bg_color: Color::Red,
modifier: Modifier::ITALIC,
},
};

let actual = serde_yaml::to_string(&theme).unwrap();

let expected = indoc! {r#"
title:
fg_color: red
bg_color: blue
modifier: bold
border:
active:
fg_color: green
bg_color: yellow
modifier: italic
inactive:
fg_color: darkgray
bg_color: default
modifier: none
mouse_over:
fg_color: default
bg_color: default
modifier: none
body:
fg_color: blue
bg_color: red
modifier: italic
"#};

assert_eq!(actual, expected);
}

#[test]
fn test_deserialize_event_theme() {
let data = indoc! {r#"
title:
fg_color: red
bg_color: blue
modifier: bold
border:
active:
fg_color: green
bg_color: yellow
modifier: italic
inactive:
fg_color: default
bg_color: default
modifier: none
body:
fg_color: blue
bg_color: red
modifier: italic
"#};

let actual: ComponentTheme = serde_yaml::from_str(data).unwrap();

let expected = ComponentTheme {
title: ThemeStyle {
fg_color: Color::Red,
bg_color: Color::Blue,
modifier: Modifier::BOLD,
},
border: FocusableThemeStyle {
active: ThemeStyle {
fg_color: Color::Green,
bg_color: Color::Yellow,
modifier: Modifier::ITALIC,
},
inactive: ThemeStyle::default(),
mouse_over: ThemeStyle::default(),
},
body: ThemeStyle {
fg_color: Color::Blue,
bg_color: Color::Red,
modifier: Modifier::ITALIC,
},
};

assert_eq!(actual, expected);
}
}
4 changes: 4 additions & 0 deletions src/theme/style.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
use ratatui::style::{Color, Modifier};
use serde::{Deserialize, Serialize};

/// Theme用のスタイル
/// - 上位レイヤーで指定されていない場合は下位レイヤーのスタイルを継承する
/// - 上位レイヤーで指定されている場合は上位レイヤーのスタイルを優先する
/// - Modifierは加算方式
#[derive(Default, Debug, Clone, PartialEq, Eq, Deserialize, Serialize)]
pub struct ThemeStyle {
#[serde(with = "serde_color", default)]
Expand Down

0 comments on commit 47eee38

Please sign in to comment.