fix: display parsing error for kdl files located under the 'themes' directory (#2762)

* fix: display parsing error for kdl files located under the 'themes' directory

* refactor: if-let to match

---------

Co-authored-by: Jae-Heon Ji <atx6419@gmail.com>
This commit is contained in:
John Shin 2023-09-26 18:31:20 -07:00 committed by GitHub
parent 545ca87ead
commit 9c020757a5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 4 deletions

View file

@ -1791,7 +1791,7 @@ impl Themes {
Ok(themes)
}
pub fn from_string(raw_string: String) -> Result<Self, ConfigError> {
pub fn from_string(raw_string: &String) -> Result<Self, ConfigError> {
let kdl_config: KdlDocument = raw_string.parse()?;
let kdl_themes = kdl_config.get("themes").ok_or(ConfigError::new_kdl_error(
"No theme node found in file".into(),
@ -1805,8 +1805,13 @@ impl Themes {
pub fn from_path(path_to_theme_file: PathBuf) -> Result<Self, ConfigError> {
// String is the theme name
let kdl_config = std::fs::read_to_string(&path_to_theme_file)
.map_err(|e| ConfigError::IoPath(e, path_to_theme_file.into()))?;
Themes::from_string(kdl_config)
.map_err(|e| ConfigError::IoPath(e, path_to_theme_file.clone()))?;
Themes::from_string(&kdl_config).map_err(|e| match e {
ConfigError::KdlError(kdl_error) => ConfigError::KdlError(
kdl_error.add_src(path_to_theme_file.display().to_string(), kdl_config),
),
e => e,
})
}
pub fn from_dir(path_to_theme_dir: PathBuf) -> Result<Self, ConfigError> {

View file

@ -68,7 +68,7 @@ fn get_default_themes() -> Themes {
let mut themes = Themes::default();
for file in ZELLIJ_DEFAULT_THEMES.files() {
if let Some(content) = file.contents_utf8() {
match Themes::from_string(content.to_string()) {
match Themes::from_string(&content.to_string()) {
Ok(theme) => themes = themes.merge(theme),
Err(_) => {},
}