From d3840798420ff1e1c4805fc259823dc50c5d847d Mon Sep 17 00:00:00 2001 From: freestrings Date: Sun, 23 Jun 2019 17:22:58 +0900 Subject: [PATCH] =?UTF-8?q?Leaves=20=EC=B2=98=EB=A6=AC=20=EC=9C=84?= =?UTF-8?q?=EC=B9=98=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/select/mod.rs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/select/mod.rs b/src/select/mod.rs index 122337d..9d39006 100644 --- a/src/select/mod.rs +++ b/src/select/mod.rs @@ -470,12 +470,12 @@ fn walk_all<'a>(vec: &Vec<&'a Value>, tmp: &mut Vec<&'a Value>) { } fn walk<'a, F>(vec: &Vec<&'a Value>, tmp: &mut Vec<&'a Value>, fun: &F) -where - F: Fn(&Value) -> Option>, -{ - fn _walk<'a, F>(v: &'a Value, tmp: &mut Vec<&'a Value>, fun: &F) where F: Fn(&Value) -> Option>, +{ + fn _walk<'a, F>(v: &'a Value, tmp: &mut Vec<&'a Value>, fun: &F) + where + F: Fn(&Value) -> Option>, { if let Some(mut ret) = fun(v) { tmp.append(&mut ret); @@ -896,17 +896,17 @@ impl<'a, 'b> NodeVisitor for Selector<'a, 'b> { } } ParseToken::Relative => { + if let Some(ParseToken::Array) = self.tokens.last() { + let array_token = self.tokens.pop(); + if let Some(ParseToken::Leaves) = self.tokens.last() { + self.tokens.pop(); + self.all_from_current(); + } + self.tokens.push(array_token.unwrap()); + } self.new_filter_context(); } - ParseToken::In | ParseToken::Leaves => { - self.tokens.push(token.clone()); - } - ParseToken::Array => { - if let Some(ParseToken::Leaves) = self.tokens.last() { - self.tokens.pop(); - self.all_from_current(); - } - + ParseToken::In | ParseToken::Leaves | ParseToken::Array => { self.tokens.push(token.clone()); } ParseToken::ArrayEof => {