yaml.rs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. use std::path::PathBuf;
  2. use super::{Perferences, APP_INFO, LINE_WRAPPING_KEY, THEME_KET, THEME_PATH};
  3. use crate::{
  4. errors::*,
  5. modules::perferences::{LANGUAGE_KEY, LANGUAGE_SYNTAX_KEY, SYNTAX_PATH},
  6. };
  7. use app_dirs2::{app_dir, AppDataType};
  8. use yaml_rust::Yaml;
  9. pub struct YamlPerferences {
  10. data: Yaml,
  11. }
  12. impl YamlPerferences {
  13. pub fn new(yaml: Yaml) -> YamlPerferences {
  14. YamlPerferences { data: yaml }
  15. }
  16. }
  17. impl Perferences for YamlPerferences {
  18. fn load(&mut self) {
  19. todo!()
  20. }
  21. fn line_wrapping(&self) -> bool {
  22. self.data[LINE_WRAPPING_KEY].as_bool().unwrap_or(true)
  23. }
  24. fn tab_width(&self) -> usize {
  25. todo!()
  26. }
  27. fn soft_tab(&self) -> bool {
  28. todo!()
  29. }
  30. fn theme_name(&self) -> Option<String> {
  31. self.data[THEME_KET].as_str().map(|x| x.to_owned())
  32. }
  33. fn syntax_definition_name(&self, path: &std::path::Path) -> Option<String> {
  34. if let Some(extension) = path.extension().and_then(|f| f.to_str()) {
  35. if let Some(syntax_definition) =
  36. self.data[LANGUAGE_KEY][extension][LANGUAGE_SYNTAX_KEY].as_str()
  37. {
  38. return Some(syntax_definition.to_string());
  39. }
  40. }
  41. None
  42. }
  43. }