[Fix] auto detect content which should use source syntax (#86)
parent
727584b109
commit
ac30b071d2
|
@ -1,3 +1,5 @@
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use cosmic_text::{Attrs, Family, Style, Weight};
|
use cosmic_text::{Attrs, Family, Style, Weight};
|
||||||
use syntect::{
|
use syntect::{
|
||||||
easy::HighlightLines,
|
easy::HighlightLines,
|
||||||
|
@ -8,11 +10,14 @@ use syntect::{
|
||||||
|
|
||||||
use crate::components::interface::render_error::RenderError;
|
use crate::components::interface::render_error::RenderError;
|
||||||
|
|
||||||
|
type SourceMap = HashMap<&'static str, &'static str>;
|
||||||
|
|
||||||
pub struct Highlight {
|
pub struct Highlight {
|
||||||
content: String,
|
content: String,
|
||||||
code_file_path: String,
|
code_file_path: String,
|
||||||
extension: Option<String>,
|
extension: Option<String>,
|
||||||
font_family: String,
|
font_family: String,
|
||||||
|
highlighting_language_source_map: SourceMap,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub type HighlightResult<'a> = Vec<(&'a str, Attrs<'a>)>;
|
pub type HighlightResult<'a> = Vec<(&'a str, Attrs<'a>)>;
|
||||||
|
@ -29,6 +34,7 @@ impl Highlight {
|
||||||
code_file_path,
|
code_file_path,
|
||||||
extension,
|
extension,
|
||||||
font_family,
|
font_family,
|
||||||
|
highlighting_language_source_map: HashMap::from([("PHP", "<?php")]),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,6 +53,15 @@ impl Highlight {
|
||||||
))?,
|
))?,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if let Some(identifier) = self.highlighting_language_source_map.get(&syntax.name[..]) {
|
||||||
|
if !self.content.contains(identifier) {
|
||||||
|
return Ok(syntax_set
|
||||||
|
.find_syntax_by_name(&format!("{} Source", &syntax.name))
|
||||||
|
.unwrap_or(syntax)
|
||||||
|
.to_owned());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(syntax.to_owned())
|
Ok(syntax.to_owned())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue