From 9e427d9063a5d0180b8acc8705c3c2d7b0c01bcc Mon Sep 17 00:00:00 2001 From: Jokler Date: Sat, 6 Jul 2019 01:32:12 +0200 Subject: Main: Update dependencies and remove clippy plugin --- src/main.rs | 3 --- src/plugins/factoid/mod.rs | 31 +++++++++++++++++-------------- src/plugins/factoid/utils.rs | 10 +++++----- 3 files changed, 22 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/main.rs b/src/main.rs index ef24e4d..ed205f3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,3 @@ -#![cfg_attr(feature = "clippy", feature(plugin))] -#![cfg_attr(feature = "clippy", plugin(clippy))] - extern crate frippy; extern crate glob; extern crate irc; diff --git a/src/plugins/factoid/mod.rs b/src/plugins/factoid/mod.rs index 4fcc7a0..5a484e6 100644 --- a/src/plugins/factoid/mod.rs +++ b/src/plugins/factoid/mod.rs @@ -210,20 +210,23 @@ impl Factoid { .collect::>(); let lua = unsafe { Lua::new_with_debug() }; - let globals = lua.globals(); - - globals.set("factoid", code)?; - globals.set("download", lua.create_function(download)?)?; - globals.set("json_decode", lua.create_function(json_decode)?)?; - globals.set("sleep", lua.create_function(sleep)?)?; - globals.set("args", args)?; - globals.set("input", command.tokens.join(" "))?; - globals.set("user", command.source.clone())?; - globals.set("channel", command.target.clone())?; - globals.set("output", lua.create_table()?)?; - - lua.exec::<()>(LUA_SANDBOX, Some(name))?; - let output: Vec = globals.get::<_, Vec>("output")?; + let output = lua.context(|ctx| { + let globals = ctx.globals(); + + globals.set("factoid", code)?; + globals.set("download", ctx.create_function(|ctx, url| download(&ctx, url))?)?; + globals.set("json_decode", ctx.create_function(|ctx, json| json_decode(&ctx, json))?)?; + globals.set("sleep", ctx.create_function(|ctx, ms| sleep(&ctx, ms))?)?; + globals.set("args", args)?; + globals.set("input", command.tokens.join(" "))?; + globals.set("user", command.source.clone())?; + globals.set("channel", command.target.clone())?; + globals.set("output", ctx.create_table()?)?; + + ctx.load(LUA_SANDBOX).set_name(name)?.exec()?; + + Ok(globals.get::<_, Vec>("output")?) + })?; Ok(output.join("|")) } diff --git a/src/plugins/factoid/utils.rs b/src/plugins/factoid/utils.rs index 7bd9b20..bd1bf43 100644 --- a/src/plugins/factoid/utils.rs +++ b/src/plugins/factoid/utils.rs @@ -5,19 +5,19 @@ use serde_json::{self, Value as SerdeValue}; use super::rlua::Error as LuaError; use super::rlua::Error::RuntimeError; -use super::rlua::{Lua, Value as LuaValue}; +use super::rlua::{Context, Value as LuaValue}; use utils::error::ErrorKind::Connection; use utils::Url; use failure::Fail; -pub fn sleep(_: &Lua, dur: u64) -> Result<(), LuaError> { +pub fn sleep(_: &Context, dur: u64) -> Result<(), LuaError> { thread::sleep(Duration::from_millis(dur)); Ok(()) } -pub fn download(_: &Lua, url: String) -> Result { +pub fn download(_: &Context, url: String) -> Result { let url = Url::from(url).max_kib(1024); match url.request() { Ok(v) => Ok(v), @@ -36,7 +36,7 @@ pub fn download(_: &Lua, url: String) -> Result { } } -fn convert_value(lua: &Lua, sval: SerdeValue, max_recurs: usize) -> Result { +fn convert_value<'l>(lua: &Context<'l>, sval: SerdeValue, max_recurs: usize) -> Result, LuaError> { if max_recurs == 0 { return Err(RuntimeError(String::from( "Reached max recursion level - json is nested too deep", @@ -74,7 +74,7 @@ fn convert_value(lua: &Lua, sval: SerdeValue, max_recurs: usize) -> Result Result { +pub fn json_decode<'l>(lua: &Context<'l>, json: String) -> Result, LuaError> { let ser_val: SerdeValue = serde_json::from_str(&json).map_err(|e| RuntimeError(e.to_string()))?; -- cgit v1.2.3-70-g09d2