From 04a5a938994ddb95cfaa9a74b180e457d3a2b5d0 Mon Sep 17 00:00:00 2001 From: Nathan Reiner Date: Fri, 2 Aug 2024 11:38:19 +0200 Subject: implement new lua interface --- src/sheet/eval.rs | 55 ------------------------------------------------------- 1 file changed, 55 deletions(-) delete mode 100644 src/sheet/eval.rs (limited to 'src/sheet/eval.rs') diff --git a/src/sheet/eval.rs b/src/sheet/eval.rs deleted file mode 100644 index 2108e48..0000000 --- a/src/sheet/eval.rs +++ /dev/null @@ -1,55 +0,0 @@ -use std::{ - sync::{Arc, RwLock}, - thread::JoinHandle, -}; - -use mlua::prelude::*; - -use crate::lua; - -use super::{cell::Cell, Sheet}; - -pub trait EvalFunction { - fn eval_function( - &self, - func: String, - range: Vec<(usize, usize)>, - ) -> JoinHandle>; -} - -impl EvalFunction for Arc> { - fn eval_function( - &self, - func_text: String, - range: Vec<(usize, usize)>, - ) -> JoinHandle> { - *self.read().unwrap().progress.lock().unwrap() = 0; - let this = Arc::clone(self); - std::thread::spawn(move || { - let lua = lua::get(); - let read_sheet = this.read().unwrap(); - let mut sheet = read_sheet.clone(); - let result = lua.load(func_text).eval::(); - - match result { - Ok(func) => { - let read_sheet = this.read().unwrap(); - - 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(cell) => sheet.set_cell(*row, *column, cell), - Err(error) => return Err(error.to_string()), - } - } - } - Err(error) => return Err(error.to_string()), - } - - Ok(sheet) - }) - } -} -- cgit v1.2.3-70-g09d2