From 298adf998a52b14f07bef682932a5224eb712054 Mon Sep 17 00:00:00 2001 From: InioX Date: Sun, 3 Mar 2024 18:47:06 +0100 Subject: [PATCH 1/2] feat: add `harmonized_colors` to `--json` flag (#53) --- src/main.rs | 56 ++++++++++++++++---------------------------- src/util/color.rs | 22 +++++++---------- src/util/template.rs | 6 ++--- 3 files changed, 32 insertions(+), 52 deletions(-) diff --git a/src/main.rs b/src/main.rs index f85e6c3..5157595 100644 --- a/src/main.rs +++ b/src/main.rs @@ -87,7 +87,7 @@ fn main() -> Result<(), Report> { } if let Some(ref format) = args.json { - dump_json(&schemes, &source_color, format); + dump_json(&schemes, &source_color, format, &harmonized_colors); } if args.dry_run == Some(false) { @@ -99,7 +99,7 @@ fn main() -> Result<(), Report> { &source_color, &default_scheme, &config.config.custom_keywords, - harmonized_colors, + &harmonized_colors, )?; if config.config.reload_apps == Some(true) { @@ -177,44 +177,28 @@ fn generate_scheme( ) -> Scheme { match scheme_type.unwrap() { SchemeTypes::SchemeContent => { - Scheme::from( - SchemeContent::new(Hct::new(source_color), is_dark, contrast_level).scheme, - ) - } - SchemeTypes::SchemeExpressive => { - Scheme::from( - SchemeExpressive::new(Hct::new(source_color), is_dark, contrast_level).scheme, - ) - } - SchemeTypes::SchemeFidelity => { - Scheme::from( - SchemeFidelity::new(Hct::new(source_color), is_dark, contrast_level).scheme, - ) - } - SchemeTypes::SchemeFruitSalad => { - Scheme::from( - SchemeFruitSalad::new(Hct::new(source_color), is_dark, contrast_level).scheme, - ) - } - SchemeTypes::SchemeMonochrome => { - Scheme::from( - SchemeMonochrome::new(Hct::new(source_color), is_dark, contrast_level).scheme, - ) + Scheme::from(SchemeContent::new(Hct::new(source_color), is_dark, contrast_level).scheme) } + SchemeTypes::SchemeExpressive => Scheme::from( + SchemeExpressive::new(Hct::new(source_color), is_dark, contrast_level).scheme, + ), + SchemeTypes::SchemeFidelity => Scheme::from( + SchemeFidelity::new(Hct::new(source_color), is_dark, contrast_level).scheme, + ), + SchemeTypes::SchemeFruitSalad => Scheme::from( + SchemeFruitSalad::new(Hct::new(source_color), is_dark, contrast_level).scheme, + ), + SchemeTypes::SchemeMonochrome => Scheme::from( + SchemeMonochrome::new(Hct::new(source_color), is_dark, contrast_level).scheme, + ), SchemeTypes::SchemeNeutral => { - Scheme::from( - SchemeNeutral::new(Hct::new(source_color), is_dark, contrast_level).scheme, - ) + Scheme::from(SchemeNeutral::new(Hct::new(source_color), is_dark, contrast_level).scheme) } SchemeTypes::SchemeRainbow => { - Scheme::from( - SchemeRainbow::new(Hct::new(source_color), is_dark, contrast_level).scheme, - ) - } - SchemeTypes::SchemeTonalSpot => { - Scheme::from( - SchemeTonalSpot::new(Hct::new(source_color), is_dark, contrast_level).scheme, - ) + Scheme::from(SchemeRainbow::new(Hct::new(source_color), is_dark, contrast_level).scheme) } + SchemeTypes::SchemeTonalSpot => Scheme::from( + SchemeTonalSpot::new(Hct::new(source_color), is_dark, contrast_level).scheme, + ), } } diff --git a/src/util/color.rs b/src/util/color.rs index 0d76125..a48e388 100644 --- a/src/util/color.rs +++ b/src/util/color.rs @@ -118,7 +118,12 @@ pub fn show_color(schemes: &Schemes, source_color: &[u8; 4]) { table.printstd(); } -pub fn dump_json(schemes: &Schemes, source_color: &[u8; 4], format: &Format) { +pub fn dump_json( + schemes: &Schemes, + source_color: &[u8; 4], + format: &Format, + harmonized_colors: &Option>, +) { type F = Format; let fmt = match format { F::Rgb => |c: Rgb| format!("rgb({:?}, {:?}, {:?})", c.red(), c.green(), c.blue()), @@ -131,18 +136,8 @@ pub fn dump_json(schemes: &Schemes, source_color: &[u8; 4], format: &Format) { c.alpha() ) }, - F::Hsl => { - |c: Rgb| Hsl::from((c.red(), c.green(), c.blue())).to_css_string() - } - F::Hsla => |c: Rgb| { - Hsl::from(( - c.red(), - c.green(), - c.blue(), - c.alpha(), - )) - .to_css_string() - }, + F::Hsl => |c: Rgb| Hsl::from((c.red(), c.green(), c.blue())).to_css_string(), + F::Hsla => |c: Rgb| Hsl::from((c.red(), c.green(), c.blue(), c.alpha())).to_css_string(), F::Hex => |c: Rgb| c.to_hex_string(), F::Strip => |c: Rgb| c.to_hex_string().replace('#', ""), }; @@ -167,6 +162,7 @@ pub fn dump_json(schemes: &Schemes, source_color: &[u8; 4], format: &Format) { "light": colors_normal_light, "dark": colors_normal_dark, }, + "harmonized_colors": harmonized_colors, }) ); } diff --git a/src/util/template.rs b/src/util/template.rs index 9c50d4b..321a446 100644 --- a/src/util/template.rs +++ b/src/util/template.rs @@ -95,7 +95,7 @@ impl Template { source_color: &[u8; 4], default_scheme: &SchemesEnum, custom_keywords: &Option>, - harmonized_colors: Option>, + harmonized_colors: &Option>, ) -> Result<(), Report> { let default_prefix = "@".to_string(); @@ -275,12 +275,12 @@ fn generate_colors( fn generate_harmonized_colors( _source_color: &[u8; 4], - harmonized_colors: Option>, + harmonized_colors: &Option>, ) -> Result>, Report> { if let Some(colors) = harmonized_colors { let mut map: HashMap = Default::default(); for (name, color) in colors { - map.insert(name, generate_color_strings(color)); + map.insert(name.to_string(), generate_color_strings(*color)); } Ok(Some(map)) } else { From 4523c6522929e79be7a23ae44535828a7d7813a8 Mon Sep 17 00:00:00 2001 From: InioX Date: Sun, 3 Mar 2024 18:54:15 +0100 Subject: [PATCH 2/2] refactor: remove error message when compiling template --- src/util/template.rs | 36 ++++-------------------------------- 1 file changed, 4 insertions(+), 32 deletions(-) diff --git a/src/util/template.rs b/src/util/template.rs index 321a446..1b3f9fe 100644 --- a/src/util/template.rs +++ b/src/util/template.rs @@ -160,9 +160,7 @@ impl Template { input_path_absolute.display(), error ); - Report::new(error) - .wrap_err(message) - .suggestion("Make sure you closed the {{ opening properly.") + Report::new(error).wrap_err(message) })?; debug!( @@ -196,36 +194,10 @@ impl Template { "[{} - {}]\n{:#}", name, input_path_absolute.display(), - error + &error ); - Report::new(error).wrap_err(message).note( - r#"The following colors have been removed: - - color_accent_primary - - color_accent_primary_variant - - color_accent_secondary - - color_accent_secondary_variant - - color_accent_tertiary - - color_accent_tertiary_variant - - text_color_primary - - text_color_secondary: - - text_color_tertiary - - text_color_primary_inverse - - text_color_secondary_inverse - - text_color_tertiary_inverse - - color_background - - color_background_floating - - color_surface - - color_surface_variant - - color_surface_highlight - - surface_header - - under_surface - - off_state - - accent_surface - - text_primary_on_accent - - text_secondary_on_accent - - volume_background - "#, - ) + + Report::new(error).wrap_err(message) })?; let mut output_file = OpenOptions::new()