mirror of
https://github.com/lsd-rs/lsd
synced 2024-12-15 06:22:47 +00:00
♻️ refactor theme read file to de trait
This commit is contained in:
parent
85b9fc2a1e
commit
439b641fbf
2 changed files with 5 additions and 5 deletions
|
@ -138,7 +138,7 @@ impl Colors {
|
||||||
let theme = match t {
|
let theme = match t {
|
||||||
ThemeOption::NoColor => None,
|
ThemeOption::NoColor => None,
|
||||||
ThemeOption::Default | ThemeOption::NoLscolors => Some(Theme::default().color),
|
ThemeOption::Default | ThemeOption::NoLscolors => Some(Theme::default().color),
|
||||||
ThemeOption::Custom(ref file) => Some(Theme::from_path(file).unwrap_or_default().color),
|
ThemeOption::Custom(ref file) => Some(Theme::from_path::<ColorTheme>(file).unwrap_or_default()),
|
||||||
};
|
};
|
||||||
let lscolors = match t {
|
let lscolors = match t {
|
||||||
ThemeOption::Default | ThemeOption::Custom(_) => {
|
ThemeOption::Default | ThemeOption::Custom(_) => {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
pub mod color;
|
pub mod color;
|
||||||
pub mod icon;
|
pub mod icon;
|
||||||
|
|
||||||
use serde::Deserialize;
|
use serde::{Deserialize, de::DeserializeOwned};
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ impl Theme {
|
||||||
/// This read theme from file,
|
/// This read theme from file,
|
||||||
/// use the file path if it is absolute
|
/// use the file path if it is absolute
|
||||||
/// prefix the config_file dir to it if it is not
|
/// prefix the config_file dir to it if it is not
|
||||||
pub fn from_path(file: &str) -> Option<Self> {
|
pub fn from_path<D: DeserializeOwned>(file: &str) -> Option<D> {
|
||||||
let real = if let Some(path) = config_file::Config::expand_home(file) {
|
let real = if let Some(path) = config_file::Config::expand_home(file) {
|
||||||
path
|
path
|
||||||
} else {
|
} else {
|
||||||
|
@ -76,7 +76,7 @@ impl Theme {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// This constructs a Theme struct with a passed [Yaml] str.
|
/// This constructs a Theme struct with a passed [Yaml] str.
|
||||||
fn with_yaml(yaml: &str) -> Result<Self, serde_yaml::Error> {
|
fn with_yaml<D: DeserializeOwned>(yaml: &str) -> Result<D, serde_yaml::Error> {
|
||||||
serde_yaml::from_str::<Self>(yaml)
|
serde_yaml::from_str::<D>(yaml)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue