on master help sign in
Extract common syntax functionality to helper fns
commit83d408bab3ea93314d4b0d7e3a496c8601d3fec7 authorKyle Criddle <criddle.kyle@gmail.com> dateSun 19 Apr 2020, 08:56 (7 years ago) parent8067fd9
1 file changed+23−24
src/assets.rs+23−24
src/assets.rs+23−24
@@ -184,17 +184,8 @@ impl HighlightingAssets {
184184 (Some(language), _) => self.syntax_set.find_syntax_by_token(language),
185185 (None, InputFile::Ordinary(ofile)) => {
186186 let path = Path::new(ofile.filename());
187−
188187 let file_name = path.file_name().and_then(|n| n.to_str()).unwrap_or("");
189− let extension = path.extension().and_then(|x| x.to_str()).unwrap_or("");
190−
191− let ext_syntax = self
192− .syntax_set
193− .find_syntax_by_extension(&file_name)
194− .or_else(|| self.syntax_set.find_syntax_by_extension(&extension));
195− let line_syntax = String::from_utf8(reader.first_line.clone())
196− .ok()
197− .and_then(|l| self.syntax_set.find_syntax_by_first_line(&l));
188+ let line_syntax = self.get_first_line_syntax(reader);
198189
199190 let absolute_path = path.canonicalize().ok().unwrap_or(path.to_owned());
200191 match mapping.get_syntax_for(absolute_path) {
@@ -204,31 +195,39 @@ impl HighlightingAssets {
204195 self.syntax_set.find_syntax_by_name(syntax_name)
205196 }
206197 Some(MappingTarget::MapToUnknown) => line_syntax,
207− None => ext_syntax.or(line_syntax),
198+ None => self.get_extension_syntax(file_name).or(line_syntax),
208199 }
209200 }
210201 (None, InputFile::StdIn(None)) => String::from_utf8(reader.first_line.clone())
211202 .ok()
212203 .and_then(|l| self.syntax_set.find_syntax_by_first_line(&l)),
213204 (None, InputFile::StdIn(Some(file_name))) => self
214− .syntax_set
215− .find_syntax_by_extension(file_name.to_str().unwrap())
216− .or_else(|| {
217− self.syntax_set.find_syntax_by_extension(
218− Path::new(file_name)
219− .extension()
220− .and_then(|x| x.to_str())
221− .unwrap_or(""),
222− )
223− })
224− .or(String::from_utf8(reader.first_line.clone())
225− .ok()
226− .and_then(|l| self.syntax_set.find_syntax_by_first_line(&l))),
205+ .get_extension_syntax(file_name.to_str().unwrap())
206+ .or(self.get_first_line_syntax(reader)),
227207 (_, InputFile::ThemePreviewFile) => self.syntax_set.find_syntax_by_name("Rust"),
228208 };
229209
230210 syntax.unwrap_or_else(|| self.syntax_set.find_syntax_plain_text())
231211 }
212+
213+ fn get_extension_syntax(&self, file_name: &str) -> Option<&SyntaxReference> {
214+ self.syntax_set
215+ .find_syntax_by_extension(file_name)
216+ .or_else(|| {
217+ self.syntax_set.find_syntax_by_extension(
218+ Path::new(file_name)
219+ .extension()
220+ .and_then(|x| x.to_str())
221+ .unwrap_or(""),
222+ )
223+ })
224+ }
225+
226+ fn get_first_line_syntax(&self, reader: &mut InputFileReader) -> Option<&SyntaxReference> {
227+ String::from_utf8(reader.first_line.clone())
228+ .ok()
229+ .and_then(|l| self.syntax_set.find_syntax_by_first_line(&l))
230+ }
232231}
233232
234233#[cfg(test)]