aboutsummaryrefslogtreecommitdiff
path: root/.config/awesome/quarrel/native/src/lenses/calculator.rs
diff options
context:
space:
mode:
Diffstat (limited to '.config/awesome/quarrel/native/src/lenses/calculator.rs')
-rw-r--r--.config/awesome/quarrel/native/src/lenses/calculator.rs36
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,
+ ))
+}