summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2024-07-25 02:37:38 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2024-07-25 02:37:38 +0200
commitc6d35dbd049a77800aac53f419729aff75b3ca5c (patch)
tree2341664d464ca612b65b38df5ed3dc6a90f61b5d /src
parentc5173c96fa13159ad12982dfefecf1cb78fded05 (diff)
use lua prelude
Diffstat (limited to 'src')
-rw-r--r--src/sheet/mod.rs35
1 files changed, 19 insertions, 16 deletions
diff --git a/src/sheet/mod.rs b/src/sheet/mod.rs
index 22b73fe..18ccee0 100644
--- a/src/sheet/mod.rs
+++ b/src/sheet/mod.rs
@@ -1,7 +1,10 @@
-use std::{sync::{Arc, Mutex, RwLock}, thread::JoinHandle};
+use std::{
+ sync::{Arc, Mutex, RwLock},
+ thread::JoinHandle,
+};
use cell::{Cell, CellRef};
-use mlua::{Function, IntoLua, UserData, Value};
+use mlua::prelude::*;
use register::{Register, SheetId};
pub mod cell;
@@ -97,7 +100,7 @@ impl SheetLuaRef {
}
}
-impl UserData for SheetLuaRef {
+impl LuaUserData for SheetLuaRef {
fn add_fields<'lua, F: mlua::UserDataFields<'lua, Self>>(fields: &mut F) {
fields.add_field_method_get("width", |_, luaref| {
Ok(Register::get(luaref.id).unwrap().read().unwrap().width())
@@ -113,15 +116,18 @@ impl UserData for SheetLuaRef {
if let Some(_) = Register::get(luaref.id) {
Ok(CellRef::new(luaref.id, row, column).into_lua(lua).unwrap())
} else {
- Ok(Value::Nil)
+ Ok(LuaValue::Nil)
}
})
}
}
-
pub trait EvalFunction {
- fn eval_function(&self, func: String, range: Vec<(usize, usize)>) -> JoinHandle<Result<Sheet, String>>;
+ fn eval_function(
+ &self,
+ func: String,
+ range: Vec<(usize, usize)>,
+ ) -> JoinHandle<Result<Sheet, String>>;
}
impl EvalFunction for Arc<RwLock<Sheet>> {
@@ -133,33 +139,30 @@ impl EvalFunction for Arc<RwLock<Sheet>> {
let this = Arc::clone(self);
std::thread::spawn(move || {
let read_sheet = this.read().unwrap();
- let mut sheet = read_sheet.clone();
*read_sheet.progress.lock().unwrap() = 0;
+ let mut sheet = read_sheet.clone();
+
let lua = crate::lua::new_instance().unwrap();
let result = lua
.load(func_text.clone())
.set_name("Temp Script")
- .eval::<Function>();
+ .eval::<LuaFunction>();
match result {
Ok(func) => {
for (i, (row, column)) in range.iter().enumerate() {
-
*read_sheet.progress.lock().unwrap() = (i * 100 / range.len()) as u8;
let cellref = read_sheet.get_ref(*row, *column);
-
match func.call::<_, Cell>(cellref) {
- Ok(value) => {
- sheet.set_cell(*row, *column, value)
- },
+ Ok(cell) => sheet.set_cell(*row, *column, cell),
Err(error) => return Err(error.to_string()),
}
}
- Ok(sheet)
}
- Err(error) => Err(error.to_string()),
+ Err(error) => return Err(error.to_string()),
}
+
+ Ok(sheet)
})
}
-
}