diff options
Diffstat (limited to '.config/awesome/quarrel/native/src/lenses/calculator.rs')
-rw-r--r-- | .config/awesome/quarrel/native/src/lenses/calculator.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/.config/awesome/quarrel/native/src/lenses/calculator.rs b/.config/awesome/quarrel/native/src/lenses/calculator.rs new file mode 100644 index 0000000..89b738e --- /dev/null +++ b/.config/awesome/quarrel/native/src/lenses/calculator.rs @@ -0,0 +1,36 @@ +// use meval::eval_str; +use cpc::{ + eval, + units::Unit, +}; +use mlua::prelude::*; + +use crate::lenses::entry::{ + entries_to_lua_table, + Entry, +}; + +pub fn query<'a>(lua: &Lua, input: String) -> LuaResult<LuaTable> { + let result = match eval(input.trim(), true, Unit::Celsius, false) { + Ok(result) => { + format!( + "{}{}", + result.value, + match result.unit { + Unit::NoUnit => "".to_owned(), + _ => format!(" {:?}", result.unit), + } + ) + } + Err(_) => return lua.create_table(), + }; + + Ok(entries_to_lua_table( + vec![Entry { + message: result, + exec: None, + provider: "Calculator".to_string(), + }], + lua, + )) +} |