Improve header to make filename prominent and show recognised language

pull/25/head
Wilfred Hughes 2021-07-03 22:53:59 +07:00
parent 4afb6b2f2e
commit 8012ab9f75
3 changed files with 12 additions and 6 deletions

@ -76,7 +76,7 @@ fn main() {
let arena = Arena::new();
let (lhs, rhs) = match lang {
let (lhs, rhs) = match &lang {
Some(lang) => (
parse(&arena, &lhs_src, &lang),
parse(&arena, &rhs_src, &lang),
@ -117,7 +117,11 @@ fn main() {
let lhs_colored = apply_colors(&lhs_src, true, &lhs_positions);
let rhs_colored = apply_colors(&rhs_src, false, &rhs_positions);
println!("{}", style::header(lhs_path));
let lang_name = match &lang {
Some(lang) => lang.name.clone(),
None => "plain text".to_string(),
};
println!("{}", style::header(lhs_path, &lang_name));
print!(
"{}",
apply_groups(

@ -40,6 +40,7 @@ impl ConfigDir {
}
pub struct Language {
pub name: String,
extensions: Vec<String>,
atom_patterns: Vec<Regex>,
string_patterns: Vec<Regex>,
@ -54,7 +55,7 @@ fn read_syntax_toml(src: &str) -> Vec<Language> {
table
.iter()
.map(|(_, value)| lang_from_value(value))
.map(|(name, value)| lang_from_value(name, value))
.collect()
}
@ -86,9 +87,10 @@ fn as_regex(s: &str) -> Regex {
Regex::new(&pattern).unwrap()
}
fn lang_from_value(v: &Value) -> Language {
fn lang_from_value(name: &str, v: &Value) -> Language {
let table = v.as_table().unwrap();
Language {
name: name.into(),
extensions: as_string_vec(v.get("extensions").unwrap()),
atom_patterns: as_regex_vec(v.get("atom_patterns").unwrap()),
string_patterns: as_regex_vec(v.get("string_patterns").unwrap()),

@ -114,6 +114,6 @@ pub fn apply_colors(s: &str, is_lhs: bool, positions: &[MatchedPos]) -> String {
apply(s, &styles)
}
pub fn header(file_name: &str) -> String {
format!("Changes to {}", file_name)
pub fn header(file_name: &str, language_name: &str) -> String {
format!("Changes to {} ({})", file_name.white(), language_name)
}