diff options
author | Kyle Criddle <criddle.kyle@gmail.com> | 2020-04-04 18:49:55 -0600 |
---|---|---|
committer | David Peter <sharkdp@users.noreply.github.com> | 2020-04-21 08:57:15 +0200 |
commit | 04fa84aea7d02074bc650a552abb397b35c6720c (patch) | |
tree | 7033fe8b52a3647fafe818922abdae56d914d171 /src/assets.rs | |
parent | a3f8140fbe89d4980014e8af4e34469202ce2799 (diff) |
Moved user_provided_filename to be contained within OrdinaryFile struct
Diffstat (limited to 'src/assets.rs')
-rw-r--r-- | src/assets.rs | 51 |
1 files changed, 18 insertions, 33 deletions
diff --git a/src/assets.rs b/src/assets.rs index 73353480..4328fd15 100644 --- a/src/assets.rs +++ b/src/assets.rs @@ -177,14 +177,13 @@ impl HighlightingAssets { &self, language: Option<&str>, file: InputFile, - file_name: Option<&str>, reader: &mut InputFileReader, mapping: &SyntaxMapping, ) -> &SyntaxReference { - let syntax = match (language, file, file_name) { - (Some(language), _, _) => self.syntax_set.find_syntax_by_token(language), - (None, InputFile::Ordinary(file), _) => { - let path = Path::new(file); + let syntax = match (language, file) { + (Some(language), _) => self.syntax_set.find_syntax_by_token(language), + (None, InputFile::Ordinary(ofile)) => { + let path = Path::new(ofile.filename()); let file_name = path.file_name().and_then(|n| n.to_str()).unwrap_or(""); let extension = path.extension().and_then(|x| x.to_str()).unwrap_or(""); @@ -208,12 +207,12 @@ impl HighlightingAssets { None => ext_syntax.or(line_syntax), } } - (None, InputFile::StdIn, None) => String::from_utf8(reader.first_line.clone()) + (None, InputFile::StdIn(None)) => String::from_utf8(reader.first_line.clone()) .ok() .and_then(|l| self.syntax_set.find_syntax_by_first_line(&l)), - (None, InputFile::StdIn, Some(file_name)) => self + (None, InputFile::StdIn(Some(file_name))) => self .syntax_set - .find_syntax_by_extension(&file_name) + .find_syntax_by_extension(file_name.to_str().unwrap()) .or_else(|| { self.syntax_set.find_syntax_by_extension( Path::new(file_name) @@ -225,7 +224,7 @@ impl HighlightingAssets { .or(String::from_utf8(reader.first_line.clone()) .ok() .and_then(|l| self.syntax_set.find_syntax_by_first_line(&l))), - (_, InputFile::ThemePreviewFile, _) => self.syntax_set.find_syntax_by_name("Rust"), + (_, InputFile::ThemePreviewFile) => self.syntax_set.find_syntax_by_name("Rust"), }; syntax.unwrap_or_else(|| self.syntax_set.find_syntax_plain_text()) @@ -242,7 +241,7 @@ mod tests { use tempdir::TempDir; use crate::assets::HighlightingAssets; - use crate::inputfile::InputFile; + use crate::inputfile::{InputFile, OrdinaryFile}; use crate::syntax_mapping::{MappingTarget, SyntaxMapping}; struct SyntaxDetectionTest<'a> { @@ -261,28 +260,17 @@ mod tests { } } - fn syntax_for_file_with_content( - &self, - file_name: &str, - first_line: &str, - as_stdin: bool, - ) -> String { + fn syntax_for_file_with_content(&self, file_name: &str, first_line: &str) -> String { let file_path = self.temp_dir.path().join(file_name); { let mut temp_file = File::create(&file_path).unwrap(); writeln!(temp_file, "{}", first_line).unwrap(); } - let input_file = InputFile::Ordinary(OsStr::new(&file_path)); - let (file, file_name) = if as_stdin { - (InputFile::StdIn, Some(file_name)) - } else { - (input_file, None) - }; + let input_file = InputFile::Ordinary(OrdinaryFile::new(OsStr::new(&file_path), None)); let syntax = self.assets.get_syntax( None, - file, - file_name, + input_file, &mut input_file.get_reader(&io::stdin()).unwrap(), &self.syntax_mapping, ); @@ -291,7 +279,7 @@ mod tests { } fn syntax_for_file(&self, file_name: &str) -> String { - self.syntax_for_file_with_content(file_name, "", false) + self.syntax_for_file_with_content(file_name, "") } } @@ -325,15 +313,15 @@ mod tests { let test = SyntaxDetectionTest::new(); assert_eq!( - test.syntax_for_file_with_content("my_script", "#!/bin/bash", false), + test.syntax_for_file_with_content("my_script", "#!/bin/bash"), "Bourne Again Shell (bash)" ); assert_eq!( - test.syntax_for_file_with_content("build", "#!/bin/bash", false), + test.syntax_for_file_with_content("build", "#!/bin/bash"), "Bourne Again Shell (bash)" ); assert_eq!( - test.syntax_for_file_with_content("my_script", "<?php", false), + test.syntax_for_file_with_content("my_script", "<?php"), "PHP" ); } @@ -365,13 +353,10 @@ mod tests { let test = SyntaxDetectionTest::new(); // from file extension - assert_eq!( - test.syntax_for_file_with_content("test.cpp", "", true), - "C++" - ); + assert_eq!(test.syntax_for_file_with_content("test.cpp", ""), "C++"); // from first line (fallback) assert_eq!( - test.syntax_for_file_with_content("my_script", "#!/bin/bash", true), + test.syntax_for_file_with_content("my_script", "#!/bin/bash"), "Bourne Again Shell (bash)" ); } |