move as_bytes to inner scope

This commit is contained in:
Nguyen Duc Toan 2023-09-30 14:38:37 +07:00
parent 740e679b13
commit fc4a6e8693
2 changed files with 25 additions and 20 deletions

View file

@ -1,7 +1,13 @@
use core::files::File; use core::files::File;
use config::{MANAGER, THEME}; use config::{MANAGER, THEME};
use ratatui::{buffer::Buffer, layout::Rect, style::{Color, Modifier, Style}, text::{Line, Span}, widgets::{List, ListItem, Widget}}; use ratatui::{
buffer::Buffer,
layout::Rect,
style::{Color, Modifier, Style},
text::{Line, Span},
widgets::{List, ListItem, Widget},
};
use shared::short_path; use shared::short_path;
use crate::Ctx; use crate::Ctx;
@ -65,13 +71,7 @@ impl<'a> Folder<'a> {
let v = self.is_find.then_some(()).and_then(|_| { let v = self.is_find.then_some(()).and_then(|_| {
let finder = self.cx.manager.active().finder()?; let finder = self.cx.manager.active().finder()?;
#[cfg(target_os = "windows")] let (head, body, tail) = finder.explode(short.name.to_string_lossy())?;
let (head, body, tail) = finder.explode(short.name.to_string_lossy().as_bytes())?;
#[cfg(not(target_os = "windows"))]
let (head, body, tail) = {
use std::os::unix::ffi::OsStrExt;
finder.explode(short.name.as_bytes())?
};
// TODO: to be configured by THEME? // TODO: to be configured by THEME?
let style = Style::new().fg(Color::Rgb(255, 255, 50)).add_modifier(Modifier::ITALIC); let style = Style::new().fg(Color::Rgb(255, 255, 50)).add_modifier(Modifier::ITALIC);

View file

@ -111,22 +111,27 @@ impl Finder {
/// Explode the name into three parts: head, body, tail. /// Explode the name into three parts: head, body, tail.
#[inline] #[inline]
pub fn explode<'a>(&self, name: &[u8]) -> Option<(String, String, String)> { pub fn explode<'a>(&self, name: Cow<'a, str>) -> Option<(String, String, String)> {
let range = self.query.find(name).map(|m| m.range())?; let b = name.as_bytes();
let range = self.query.find(b).map(|m| m.range())?;
Some(( Some((
String::from_utf8_lossy(&name[..range.start]).to_string(), String::from_utf8_lossy(&b[..range.start]).to_string(),
String::from_utf8_lossy(&name[range.start..range.end]).to_string(), String::from_utf8_lossy(&b[range.start..range.end]).to_string(),
String::from_utf8_lossy(&name[range.end..]).to_string(), String::from_utf8_lossy(&b[range.end..]).to_string(),
)) ))
} }
} }
impl Finder { impl Finder {
#[inline] #[inline]
pub fn matched(&self) -> &BTreeMap<Url, u8> { &self.matched } pub fn matched(&self) -> &BTreeMap<Url, u8> {
&self.matched
}
#[inline] #[inline]
pub fn has_matched(&self) -> bool { !self.matched.is_empty() } pub fn has_matched(&self) -> bool {
!self.matched.is_empty()
}
#[inline] #[inline]
pub fn matched_idx(&self, url: &Url) -> Option<u8> { pub fn matched_idx(&self, url: &Url) -> Option<u8> {