From 7ccaaa7b7aeaac85f76fe4c7c0291f77c9b77cb4 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sat, 9 Dec 2023 11:02:41 +0100 Subject: [PATCH] custom yaml dezoomer: use the upstream version of str::substring --- Cargo.lock | 44 ++++++++++++++++++------------------- src/custom_yaml/variable.rs | 30 ++++--------------------- 2 files changed, 26 insertions(+), 48 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d3bc9ae..806992b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -45,9 +45,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6" dependencies = [ "anstyle", "anstyle-parse", @@ -74,9 +74,9 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3a318f1f38d2418400f8209655bfd825785afd25aa30bb7ba6cc792e4596748" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" dependencies = [ "windows-sys 0.52.0", ] @@ -604,9 +604,9 @@ dependencies = [ [[package]] name = "evalexpr" -version = "11.2.0" +version = "11.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c66d3694d06f23490e33b7d5d22368c1f0bc24423b61cfba4bb1b100fc55ef" +checksum = "63b41cb9dd076076058a4523f009c900c582279536d0b2e45a29aa930e083cc5" [[package]] name = "exr" @@ -900,9 +900,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -1115,9 +1115,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jpeg-decoder" @@ -1315,9 +1315,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "oorandom" @@ -1750,9 +1750,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.26" +version = "0.38.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9470c4bf8246c8daf25f9598dca807fb6510347b1e1cfa55749113850c79d88a" +checksum = "bfeae074e687625746172d639330f1de242a178bf3189b51e35a7a21573513ac" dependencies = [ "bitflags 2.4.1", "errno", @@ -1763,9 +1763,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.9" +version = "0.21.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", "ring", @@ -2195,9 +2195,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.34.0" +version = "1.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" +checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c" dependencies = [ "backtrace", "bytes", @@ -2327,9 +2327,9 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" @@ -2345,9 +2345,9 @@ checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" [[package]] name = "unicode-ident" diff --git a/src/custom_yaml/variable.rs b/src/custom_yaml/variable.rs index aeab6aa..6a7bd2d 100644 --- a/src/custom_yaml/variable.rs +++ b/src/custom_yaml/variable.rs @@ -1,4 +1,4 @@ -use evalexpr::{ContextWithMutableFunctions, ContextWithMutableVariables, HashMapContext, EvalexprError}; +use evalexpr::{ContextWithMutableVariables, HashMapContext}; use itertools::Itertools; use regex::Regex; use serde::Deserialize; @@ -169,32 +169,10 @@ impl Variables { } fn build_context() -> HashMapContext { - let mut ctx = HashMapContext::new(); - ctx.set_function( - "str::substring".to_owned(), - evalexpr::Function::new(|argument| { - let args = argument.as_tuple()?; - let subject = args - .get(0) - .ok_or(EvalexprError::WrongFunctionArgumentAmount { expected: 2, actual: 0 })? - .as_string()?; - let start = args - .get(1) - .ok_or(EvalexprError::WrongFunctionArgumentAmount { expected: 2, actual: 1 })? - .as_int()? as usize; - let end = args - .get(2) - .and_then(|arg| arg.as_int().ok()) - .map(|a| a as usize) - .unwrap_or_else(|| subject.len()); - let start = start.min(subject.len()); - let end = end.min(subject.len()).max(start); - let substr = &subject[start..end]; - Ok(evalexpr::Value::from(substr)) - }), - ).unwrap(); - ctx + HashMapContext::new() + // Add custom variables and functions here } + custom_error! {pub BadVariableError BadName{name: String} = "invalid variable name: '{name}'", TooManyValues{name:String, steps:i64}= "the range of values for {name} is too wide: {steps} steps",