src/assets.rs: Extract helper method OpenedInput::path()

This commit is contained in:
Martin Nordholts 2021-09-26 10:00:40 +02:00
parent 9d9b266f54
commit dc8225f682
2 changed files with 17 additions and 13 deletions

View File

@ -11,7 +11,7 @@ use path_abs::PathAbs;
use crate::bat_warning; use crate::bat_warning;
use crate::error::*; use crate::error::*;
use crate::input::{InputReader, OpenedInput, OpenedInputKind}; use crate::input::{InputReader, OpenedInput};
use crate::syntax_mapping::{MappingTarget, SyntaxMapping}; use crate::syntax_mapping::{MappingTarget, SyntaxMapping};
use ignored_suffixes::*; use ignored_suffixes::*;
@ -198,18 +198,7 @@ impl HighlightingAssets {
.ok_or_else(|| Error::UnknownSyntax(language.to_owned())); .ok_or_else(|| Error::UnknownSyntax(language.to_owned()));
} }
// Get the path of the file: let path = input.path();
// If this was set by the metadata, that will take priority.
// If it wasn't, it will use the real file path (if available).
let path = input
.metadata
.user_provided_name
.as_ref()
.or_else(|| match input.kind {
OpenedInputKind::OrdinaryFile(ref path) => Some(path),
_ => None,
});
let path_syntax = if let Some(path) = path { let path_syntax = if let Some(path) = path {
// If a path was provided, we try and detect the syntax based on extension mappings. // If a path was provided, we try and detect the syntax based on extension mappings.
match mapping.get_syntax_for( match mapping.get_syntax_for(

View File

@ -108,6 +108,21 @@ pub(crate) struct OpenedInput<'a> {
pub(crate) description: InputDescription, pub(crate) description: InputDescription,
} }
impl OpenedInput<'_> {
/// Get the path of the file:
/// If this was set by the metadata, that will take priority.
/// If it wasn't, it will use the real file path (if available).
pub(crate) fn path(&self) -> Option<&PathBuf> {
self.metadata
.user_provided_name
.as_ref()
.or_else(|| match self.kind {
OpenedInputKind::OrdinaryFile(ref path) => Some(path),
_ => None,
})
}
}
impl<'a> Input<'a> { impl<'a> Input<'a> {
pub fn ordinary_file(path: impl AsRef<Path>) -> Self { pub fn ordinary_file(path: impl AsRef<Path>) -> Self {
Self::_ordinary_file(path.as_ref()) Self::_ordinary_file(path.as_ref())