diff options
Diffstat (limited to 'vendor/jsonpath_lib')
-rw-r--r-- | vendor/jsonpath_lib/.cargo-checksum.json | 2 | ||||
-rw-r--r-- | vendor/jsonpath_lib/Cargo.toml | 12 | ||||
-rw-r--r-- | vendor/jsonpath_lib/src/lib.rs | 2 | ||||
-rw-r--r-- | vendor/jsonpath_lib/src/parser/mod.rs | 6 | ||||
-rw-r--r-- | vendor/jsonpath_lib/src/select/cmp.rs | 39 | ||||
-rw-r--r-- | vendor/jsonpath_lib/src/select/expr_term.rs | 11 | ||||
-rw-r--r-- | vendor/jsonpath_lib/src/select/mod.rs | 2 | ||||
-rw-r--r-- | vendor/jsonpath_lib/src/select/value_walker.rs | 11 | ||||
-rw-r--r-- | vendor/jsonpath_lib/tests/lib.rs | 4 |
9 files changed, 55 insertions, 34 deletions
diff --git a/vendor/jsonpath_lib/.cargo-checksum.json b/vendor/jsonpath_lib/.cargo-checksum.json index 8990c9bdb..8ee43aaad 100644 --- a/vendor/jsonpath_lib/.cargo-checksum.json +++ b/vendor/jsonpath_lib/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.toml":"2d3238f9f5f14d6698af79ebae55df11ef84f318bfe85ad4729ecd6e64d3c26a","LICENSE":"1006a94b25289fc498aae9fe24bb0418fce9522d9a0e2621371668828e52fc92","README.md":"2e85f9554885b95012235b01666fed918b5ad2d40f5395f735fd3887309f2618","bench.sh":"f5dd6651fd9a45476e9e98892df7eaa61cf4adea9e2daac05d57c09e75502fdf","build-wasm.sh":"8d15b5e6fd20b254ac41239f03fac864dbddda5f8efca7ea95fd1271d32da794","clippy.sh":"ce61bc9547003f2459165ae19e69c519f8e0e25689d1a2f0d56d0ef526347a84","coverage.sh":"93edb1b8c6e6a034b07c3f97f72d036dd718392c4cb9cafa081fad2987108077","docs/0.bootstrap.js":"fc485ef969f725042a70724b68ed7b8047e7ad2658604da92de57e74e5f8dab5","docs/bench/0.bootstrap.js":"ab1ca4cddf4047d00ff16bf340ba3f3184ff7398da96b8443dc72982495598c1","docs/bench/1.bootstrap.js":"c71a9447f2e392f6ebf12e14eb08a8ddddec549aa80307c804607a9d4adc2eb6","docs/bench/bootstrap.js":"7d42b4d36d56513e861975ccc76158f61689e62fdefd346736c87e791b4ed821","docs/bench/f9980c137fc7d5609726.module.wasm":"38a1865d7455ab0e17031f24196e5e029ccebb39ff903632ab08caed3a509e53","docs/bench/index.html":"867ef062decbb70de89242076e15fd0c6a643de3674cd0146fa4f68553ef9ff6","docs/bootstrap.js":"bcd1a9f509cf6eb9b453bec07c5212ab47c5bd661aa1ee727c093e06c441aa2b","docs/data/example.json":"97c96fec8ddfaa2a2da262906f41fac0d9776f1d194e718d6310fff4ef8e0a48","docs/f9980c137fc7d5609726.module.wasm":"38a1865d7455ab0e17031f24196e5e029ccebb39ff903632ab08caed3a509e53","docs/index.html":"6e69edab8aca1841cc81710287d5f5385f6ef13f1116486a33ea6224234feb47","profiling.sh":"2bedaccc8479bca2001d5541077b434614bdc08613b62585fe541f4b9d0de970","src/ffi/mod.rs":"42199ad562a681d444f71eff7dbc8776408998855b2cdf002664a9dd68045dc2","src/lib.rs":"a4b6c918ad8e3c05d58102f843557e922bf75bdb05504b1407abc1d12a9af956","src/parser/mod.rs":"0e91c23ddf89c84d42a6dff2cd1e98fbfff5698f6138c53a10a85d6e3975b4f2","src/parser/path_reader.rs":"cabd8794f40d57295cc7b7ca33ae672e6f4145d451d4f1efe202aafa8f5fcd26","src/parser/tokenizer.rs":"f6ffc3b71c89114102a109f927e255992ab0b11a1680b96539b1c3eddea08c8c","src/select/cmp.rs":"f7c699ee5a9c1c19e39ed1e684c68366b1b3cae15c4ecae69e411e8f5965f80f","src/select/expr_term.rs":"3ec7be8641e15ae7f3e4d1dd225316a523f26fd612d92dd1ab1fd7758244b262","src/select/mod.rs":"1089ae7d3d74de05a249994326e0ae063c9704ba6d7393f47f8d13952c3f0d73","src/select/value_walker.rs":"4bfd5a8eaaa6ba84e27f88e2a546bb8b401402a5944bd3461bc28b85a88911e1","tests/array_filter.rs":"dffae415b505ab70f40c3c2a1db24af99f365595bb9d267ea780ad46b621a8a4","tests/common.rs":"cc1ad24dc91e7c91cb5520cb1a9a85c29b18bcee637f512db4fb649f6143f507","tests/filter.rs":"5d0743e7108aba1a1feabeffe7fb279d91bd8fb1b36396e99c7fdac8ddd418e3","tests/jsonpath_examples.rs":"0c8b655f431a7e48807c321f465869afbef937c447ee17a7c457d54efecfa257","tests/lib.rs":"d50cde44b94df29b875d4e4429655820b2e9dd5be27cfac65e9c61141188e3aa","tests/op.rs":"c8117c32b43c6e4c2d81b0fa25574de134e5c5aa1b13d048c3ba16da8e5da47f","tests/paths.rs":"f0f281527a54df9af4c6b075d449f6af05efa0afb0968a34891265c8437c8023","tests/precompile.rs":"83a9ba9be943c44680571915ca27d24f83bfccfb04220c4397c4a0ef372817c2","tests/readme.rs":"254f7779f99b77687e06f1a572c6ec397f03c9e41ed7e159c8ed8ab6b08a3790","tests/return_type.rs":"10b47c78e4d3768d3b9542e5f4cc23158f27e86704aec1e1de58abedd82fad8e","tests/selector.rs":"d4288c468f6f81b135146046f2732673d51f71ecdd2c402fac1b1f5065519c14"},"package":"61352ec23883402b7d30b3313c16cbabefb8907361c4eb669d990cbb87ceee5a"}
\ No newline at end of file +{"files":{"Cargo.toml":"9e178307bac493cfcaa0d84ce41863895580d95d97ad7b366e50f9975f0b1054","LICENSE":"1006a94b25289fc498aae9fe24bb0418fce9522d9a0e2621371668828e52fc92","README.md":"2e85f9554885b95012235b01666fed918b5ad2d40f5395f735fd3887309f2618","bench.sh":"f5dd6651fd9a45476e9e98892df7eaa61cf4adea9e2daac05d57c09e75502fdf","build-wasm.sh":"8d15b5e6fd20b254ac41239f03fac864dbddda5f8efca7ea95fd1271d32da794","clippy.sh":"ce61bc9547003f2459165ae19e69c519f8e0e25689d1a2f0d56d0ef526347a84","coverage.sh":"93edb1b8c6e6a034b07c3f97f72d036dd718392c4cb9cafa081fad2987108077","docs/0.bootstrap.js":"fa923cd06f00ddbc90165ea8fa354d5136bce343def053a9e5c1912c1b1574a1","docs/494668cdc2dc16eb1895.module.wasm":"253c46ece5d2a58ab98d5c860b858cdb105360fb06fdecb3131ffce60eb784eb","docs/bench/0.bootstrap.js":"8e15dbff114eabd1380a5ebaddcf44718d4c44e6fa4d76ef92c1e39bb8f8aa2f","docs/bench/1.bootstrap.js":"0dbee6f24d7542aa0dcaac430e4bd0be5818a3d26516332ed558723423f26817","docs/bench/494668cdc2dc16eb1895.module.wasm":"253c46ece5d2a58ab98d5c860b858cdb105360fb06fdecb3131ffce60eb784eb","docs/bench/bootstrap.js":"f1a643279902a25823b28f3eb0ad1bc58ea00dcf2855e92c2b49ff99eda0559d","docs/bench/index.html":"867ef062decbb70de89242076e15fd0c6a643de3674cd0146fa4f68553ef9ff6","docs/bootstrap.js":"a7066e48a2e3eef70c498f3e7bcef94ce90a0d7f4d561d921a8df235b9f9ae2b","docs/data/example.json":"97c96fec8ddfaa2a2da262906f41fac0d9776f1d194e718d6310fff4ef8e0a48","docs/index.html":"6e69edab8aca1841cc81710287d5f5385f6ef13f1116486a33ea6224234feb47","docs/serverwasm.py":"00e8e27be6e24eac1f19771e29d33cfef56b458a3528efd61bd5101de2fcf67f","profiling.sh":"2bedaccc8479bca2001d5541077b434614bdc08613b62585fe541f4b9d0de970","src/ffi/mod.rs":"42199ad562a681d444f71eff7dbc8776408998855b2cdf002664a9dd68045dc2","src/lib.rs":"c64fdd2e2d417d89e9a9560a35739451159f5a7d62ca7bba49b46bf115014588","src/parser/mod.rs":"0aa8da2e9df46b84e0c7c2eea32e31d5fb9484a11665564e1674efde6c62604f","src/parser/path_reader.rs":"cabd8794f40d57295cc7b7ca33ae672e6f4145d451d4f1efe202aafa8f5fcd26","src/parser/tokenizer.rs":"f6ffc3b71c89114102a109f927e255992ab0b11a1680b96539b1c3eddea08c8c","src/select/cmp.rs":"b427e4c06d2a59ecc0ce67edfffad82570c8f1d8745b43b673a9df31c9ff44d0","src/select/expr_term.rs":"31d24a5491655922a481cce4083b407c3e621c4b8171a7aca3fbf300e4ea19e0","src/select/mod.rs":"9a687e80e8da02a96239710db7b7d9614a5a1e8f8f58d8869a7c97e2f450df60","src/select/value_walker.rs":"f6ea37fb9c9df39d4cb9626b5294c36a2f6a999e303703d2caa922a31f7c1c99","tests/array_filter.rs":"dffae415b505ab70f40c3c2a1db24af99f365595bb9d267ea780ad46b621a8a4","tests/common.rs":"cc1ad24dc91e7c91cb5520cb1a9a85c29b18bcee637f512db4fb649f6143f507","tests/filter.rs":"5d0743e7108aba1a1feabeffe7fb279d91bd8fb1b36396e99c7fdac8ddd418e3","tests/jsonpath_examples.rs":"0c8b655f431a7e48807c321f465869afbef937c447ee17a7c457d54efecfa257","tests/lib.rs":"c26ec59c4cda149582768397c363b017e186363574e7dfec396e3bff9471f226","tests/op.rs":"c8117c32b43c6e4c2d81b0fa25574de134e5c5aa1b13d048c3ba16da8e5da47f","tests/paths.rs":"f0f281527a54df9af4c6b075d449f6af05efa0afb0968a34891265c8437c8023","tests/precompile.rs":"83a9ba9be943c44680571915ca27d24f83bfccfb04220c4397c4a0ef372817c2","tests/readme.rs":"254f7779f99b77687e06f1a572c6ec397f03c9e41ed7e159c8ed8ab6b08a3790","tests/return_type.rs":"10b47c78e4d3768d3b9542e5f4cc23158f27e86704aec1e1de58abedd82fad8e","tests/selector.rs":"d4288c468f6f81b135146046f2732673d51f71ecdd2c402fac1b1f5065519c14"},"package":"eaa63191d68230cccb81c5aa23abd53ed64d83337cacbb25a7b8c7979523774f"}
\ No newline at end of file diff --git a/vendor/jsonpath_lib/Cargo.toml b/vendor/jsonpath_lib/Cargo.toml index 512897cb7..08a74a611 100644 --- a/vendor/jsonpath_lib/Cargo.toml +++ b/vendor/jsonpath_lib/Cargo.toml @@ -12,10 +12,10 @@ [package] name = "jsonpath_lib" -version = "0.2.6" +version = "0.3.0" authors = ["Changseok Han <freestrings@gmail.com>"] description = "It is JsonPath engine written in Rust. it provide a similar API interface in Webassembly and Javascript too. - Webassembly Demo: https://freestrings.github.io/jsonpath" -documentation = "https://docs.rs/jsonpath_lib/0.2.6/jsonpath_lib" +documentation = "https://docs.rs/jsonpath_lib/0.3.0/jsonpath_lib" readme = "README.md" keywords = ["jsonpath", "json", "webassembly", "lua", "query"] categories = ["wasm", "parser-implementations", "api-bindings"] @@ -26,12 +26,6 @@ repository = "https://github.com/freestrings/jsonpath" name = "jsonpath_lib" crate-type = ["cdylib", "rlib"] path = "src/lib.rs" -[dependencies.array_tool] -version = "1.0.3" - -[dependencies.env_logger] -version = "0.7" - [dependencies.log] version = "0.4" @@ -42,6 +36,8 @@ features = ["derive"] [dependencies.serde_json] version = "1.0" features = ["preserve_order"] +[dev-dependencies.env_logger] +version = "0.8" [badges.travis-ci] branch = "master" repository = "freestrings/jsonpath" diff --git a/vendor/jsonpath_lib/src/lib.rs b/vendor/jsonpath_lib/src/lib.rs index 55ac51943..1258a010f 100644 --- a/vendor/jsonpath_lib/src/lib.rs +++ b/vendor/jsonpath_lib/src/lib.rs @@ -122,9 +122,7 @@ //! &json!({"category" : "fiction","author" : "Herman Melville","title" : "Moby Dick","isbn" : "0-553-21311-3","price" : 8.99}) //! ]); //! ``` -extern crate array_tool; extern crate core; -extern crate env_logger; #[macro_use] extern crate log; extern crate serde; diff --git a/vendor/jsonpath_lib/src/parser/mod.rs b/vendor/jsonpath_lib/src/parser/mod.rs index 91cd8960b..5a28b730d 100644 --- a/vendor/jsonpath_lib/src/parser/mod.rs +++ b/vendor/jsonpath_lib/src/parser/mod.rs @@ -80,7 +80,7 @@ pub struct Parser; impl Parser { pub fn compile(input: &str) -> ParseResult<Node> { let mut tokenizer = TokenReader::new(input); - Ok(Self::json_path(&mut tokenizer)?) + Self::json_path(&mut tokenizer) } fn json_path(tokenizer: &mut TokenReader) -> ParseResult<Node> { @@ -145,6 +145,7 @@ impl Parser { } } + #[allow(clippy::unnecessary_wraps)] fn path_leaves_key(prev: Node, tokenizer: &mut TokenReader) -> ParseResult<Node> { debug!("#path_leaves_key"); Ok(Node { @@ -154,6 +155,7 @@ impl Parser { }) } + #[allow(clippy::unnecessary_wraps)] fn path_leaves_all(prev: Node, tokenizer: &mut TokenReader) -> ParseResult<Node> { debug!("#path_leaves_all"); Self::eat_token(tokenizer); @@ -164,6 +166,7 @@ impl Parser { }) } + #[allow(clippy::unnecessary_wraps)] fn path_in_all(prev: Node, tokenizer: &mut TokenReader) -> ParseResult<Node> { debug!("#path_in_all"); Self::eat_token(tokenizer); @@ -174,6 +177,7 @@ impl Parser { }) } + #[allow(clippy::unnecessary_wraps)] fn path_in_key(prev: Node, tokenizer: &mut TokenReader) -> ParseResult<Node> { debug!("#path_in_key"); Ok(Node { diff --git a/vendor/jsonpath_lib/src/select/cmp.rs b/vendor/jsonpath_lib/src/select/cmp.rs index 209e67298..6d2eaef17 100644 --- a/vendor/jsonpath_lib/src/select/cmp.rs +++ b/vendor/jsonpath_lib/src/select/cmp.rs @@ -1,4 +1,3 @@ -use array_tool::vec::{Intersect, Union}; use serde_json::Value; pub(super) trait Cmp { @@ -31,7 +30,17 @@ impl Cmp for CmpEq { } fn cmp_json<'a>(&self, v1: &[&'a Value], v2: &[&'a Value]) -> Vec<&'a Value> { - v1.to_vec().intersect(v2.to_vec()) + let mut ret = vec![]; + + for a in v1 { + for b in v2 { + if a == b { + ret.push(*a); + } + } + } + + ret } } @@ -51,7 +60,17 @@ impl Cmp for CmpNe { } fn cmp_json<'a>(&self, v1: &[&'a Value], v2: &[&'a Value]) -> Vec<&'a Value> { - v1.to_vec().intersect_if(v2.to_vec(), |a, b| a != b) + let mut ret = vec![]; + + for a in v1 { + for b in v2 { + if a != b { + ret.push(*a); + } + } + } + + ret } } @@ -151,7 +170,7 @@ impl Cmp for CmpAnd { } fn cmp_json<'a>(&self, v1: &[&'a Value], v2: &[&'a Value]) -> Vec<&'a Value> { - v1.to_vec().intersect(v2.to_vec()) + CmpEq.cmp_json(v1, v2) } } @@ -171,7 +190,17 @@ impl Cmp for CmpOr { } fn cmp_json<'a>(&self, v1: &[&'a Value], v2: &[&'a Value]) -> Vec<&'a Value> { - v1.to_vec().union(v2.to_vec()) + let mut ret = [v1, v2].concat(); + + for x in (0..ret.len()).rev() { + for y in (x+1..ret.len()).rev() { + if ret[x] == ret[y] { + ret.remove(y); + } + } + } + + ret } } diff --git a/vendor/jsonpath_lib/src/select/expr_term.rs b/vendor/jsonpath_lib/src/select/expr_term.rs index ddbf64e53..f777880ab 100644 --- a/vendor/jsonpath_lib/src/select/expr_term.rs +++ b/vendor/jsonpath_lib/src/select/expr_term.rs @@ -186,10 +186,10 @@ impl<'a> ExprTerm<'a> { } } -impl<'a> Into<ExprTerm<'a>> for &Vec<&'a Value> { - fn into(self) -> ExprTerm<'a> { - if self.len() == 1 { - match &self[0] { +impl<'a> From<&Vec<&'a Value>> for ExprTerm<'a> { + fn from(vec: &Vec<&'a Value>) -> Self { + if vec.len() == 1 { + match &vec[0] { Value::Number(v) => return ExprTerm::Number(v.clone()), Value::String(v) => return ExprTerm::String(v.clone()), Value::Bool(v) => return ExprTerm::Bool(*v), @@ -197,11 +197,10 @@ impl<'a> Into<ExprTerm<'a>> for &Vec<&'a Value> { } } - ExprTerm::Json(None, None, self.to_vec()) + ExprTerm::Json(None, None, vec.to_vec()) } } - #[cfg(test)] mod expr_term_inner_tests { use serde_json::{Number, Value}; diff --git a/vendor/jsonpath_lib/src/select/mod.rs b/vendor/jsonpath_lib/src/select/mod.rs index a3d0ec43f..9217b5b5e 100644 --- a/vendor/jsonpath_lib/src/select/mod.rs +++ b/vendor/jsonpath_lib/src/select/mod.rs @@ -44,6 +44,8 @@ pub enum JsonPathError { Serde(String), } +impl std::error::Error for JsonPathError {} + impl fmt::Debug for JsonPathError { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "{}", self) diff --git a/vendor/jsonpath_lib/src/select/value_walker.rs b/vendor/jsonpath_lib/src/select/value_walker.rs index e7b4de0e0..87a0defff 100644 --- a/vendor/jsonpath_lib/src/select/value_walker.rs +++ b/vendor/jsonpath_lib/src/select/value_walker.rs @@ -6,11 +6,7 @@ pub(super) struct ValueWalker; impl<'a> ValueWalker { pub fn all_with_num(vec: &[&'a Value], tmp: &mut Vec<&'a Value>, index: f64) { Self::walk(vec, tmp, &|v| if v.is_array() { - if let Some(item) = v.get(index as usize) { - Some(vec![item]) - } else { - None - } + v.get(index as usize).map(|item| vec![item]) } else { None }); @@ -24,10 +20,7 @@ impl<'a> ValueWalker { }); } else { Self::walk(vec, tmp, &|v| match v { - Value::Object(map) => match map.get(key) { - Some(v) => Some(vec![v]), - _ => None, - }, + Value::Object(map) => map.get(key).map(|v| vec![v]), _ => None, }); } diff --git a/vendor/jsonpath_lib/tests/lib.rs b/vendor/jsonpath_lib/tests/lib.rs index cacc9254a..907af051d 100644 --- a/vendor/jsonpath_lib/tests/lib.rs +++ b/vendor/jsonpath_lib/tests/lib.rs @@ -57,7 +57,7 @@ fn selector() { { let json = selector(path).unwrap(); compare_result(json, target); - }; + } let json_obj = read_json("./benchmark/data_obj.json"); let mut selector = jsonpath::selector(&json_obj); @@ -94,7 +94,7 @@ fn selector_as() { { let json = selector(path).unwrap(); assert_eq!(json, target); - }; + } let json_obj = read_json("./benchmark/data_obj.json"); let mut selector = jsonpath::selector_as::<Friend>(&json_obj); |