This commit is contained in:
sxyazi 2024-09-12 18:15:02 +08:00
parent b78bf6cc8d
commit cf7fd2f615
No known key found for this signature in database
2 changed files with 5 additions and 13 deletions

View file

@ -2,6 +2,7 @@ use mlua::{AnyUserData, ExternalError, Lua, Table, UserData, UserDataMethods, Va
use ratatui::widgets::Widget; use ratatui::widgets::Widget;
use super::{RectRef, Renderable, Span}; use super::{RectRef, Renderable, Span};
use crate::elements::Style;
#[derive(Clone, Default)] #[derive(Clone, Default)]
pub struct Gauge { pub struct Gauge {
@ -50,12 +51,7 @@ impl UserData for Gauge {
}); });
methods.add_function("gauge_style", |_, (ud, value): (AnyUserData, Value)| { methods.add_function("gauge_style", |_, (ud, value): (AnyUserData, Value)| {
ud.borrow_mut::<Self>()?.gauge_style = match value { ud.borrow_mut::<Self>()?.gauge_style = Style::try_from(value)?.0;
Value::Nil => ratatui::style::Style::default(),
Value::Table(tb) => crate::elements::Style::try_from(tb)?.0,
Value::UserData(ud) => ud.borrow::<crate::elements::Style>()?.0,
_ => return Err("expected a Style or Table or nil".into_lua_err()),
};
Ok(ud) Ok(ud)
}); });
} }

View file

@ -40,8 +40,8 @@ impl<'a> TryFrom<Value<'a>> for Style {
fn try_from(value: Value<'a>) -> Result<Self, Self::Error> { fn try_from(value: Value<'a>) -> Result<Self, Self::Error> {
Ok(Self(match value { Ok(Self(match value {
Value::Nil => Default::default(), Value::Nil => Default::default(),
Value::Table(tb) => Style::try_from(tb)?.0, Value::Table(tb) => Self::try_from(tb)?.0,
Value::UserData(ud) => ud.borrow::<Style>()?.0, Value::UserData(ud) => ud.borrow::<Self>()?.0,
_ => Err("expected a Style or Table or nil".into_lua_err())?, _ => Err("expected a Style or Table or nil".into_lua_err())?,
})) }))
} }
@ -58,11 +58,7 @@ impl UserData for Style {
methods.add_function("patch", |_, (ud, value): (AnyUserData, Value)| { methods.add_function("patch", |_, (ud, value): (AnyUserData, Value)| {
{ {
let mut me = ud.borrow_mut::<Self>()?; let mut me = ud.borrow_mut::<Self>()?;
me.0 = me.0.patch(match value { me.0 = me.0.patch(Self::try_from(value)?.0);
Value::Table(tb) => Style::try_from(tb)?.0,
Value::UserData(ud) => ud.borrow::<Style>()?.0,
_ => return Err("expected a Style or Table".into_lua_err()),
});
} }
Ok(ud) Ok(ud)
}) })