use mlua::{FromLua, IntoLua, Lua, LuaSerdeExt, Value}; use serde::{Deserialize, Serialize}; use yazi_fs::SortBy; use yazi_shared::event::CmdCow; #[derive(Debug, Default, Deserialize, Serialize)] pub struct SortOpt { pub by: Option, pub reverse: Option, pub dir_first: Option, pub sensitive: Option, pub translit: Option, } impl TryFrom for SortOpt { type Error = anyhow::Error; fn try_from(c: CmdCow) -> Result { Ok(Self { by: c.first().ok().map(str::parse).transpose()?, reverse: c.get("reverse").ok(), dir_first: c.get("dir-first").ok(), sensitive: c.get("sensitive").ok(), translit: c.get("translit").ok(), }) } } impl FromLua for SortOpt { fn from_lua(value: Value, lua: &Lua) -> mlua::Result { lua.from_value(value) } } impl IntoLua for SortOpt { fn into_lua(self, lua: &Lua) -> mlua::Result { lua.to_value(&self) } }