mirror of
https://github.com/sxyazi/yazi.git
synced 2026-05-13 08:16:40 +00:00
41 lines
872 B
Rust
41 lines
872 B
Rust
use std::path::Path;
|
|
|
|
use serde::Deserialize;
|
|
use yazi_shared::{MIME_DIR, event::Cmd};
|
|
|
|
use crate::{Pattern, Priority};
|
|
|
|
#[derive(Debug, Deserialize)]
|
|
pub struct Preloader {
|
|
#[serde(skip)]
|
|
pub idx: u8,
|
|
|
|
pub name: Option<Pattern>,
|
|
pub mime: Option<Pattern>,
|
|
pub run: Cmd,
|
|
#[serde(default)]
|
|
pub next: bool,
|
|
#[serde(default)]
|
|
pub prio: Priority,
|
|
}
|
|
|
|
impl Preloader {
|
|
#[inline]
|
|
pub fn matches(&self, path: &Path, mime: &str) -> bool {
|
|
self.mime.as_ref().is_some_and(|p| p.match_mime(mime))
|
|
|| self.name.as_ref().is_some_and(|p| p.match_path(path, mime == MIME_DIR))
|
|
}
|
|
}
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub struct PreloaderProps {
|
|
pub id: u8,
|
|
pub name: String,
|
|
pub prio: Priority,
|
|
}
|
|
|
|
impl From<&Preloader> for PreloaderProps {
|
|
fn from(preloader: &Preloader) -> Self {
|
|
Self { id: preloader.idx, name: preloader.run.name.to_owned(), prio: preloader.prio }
|
|
}
|
|
}
|