Leaves 처리 위치 변경

This commit is contained in:
freestrings 2019-06-23 17:22:58 +09:00
parent 5f832e8fe7
commit d384079842

View File

@ -470,7 +470,7 @@ 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) fn walk<'a, F>(vec: &Vec<&'a Value>, tmp: &mut Vec<&'a Value>, fun: &F)
where where
F: Fn(&Value) -> Option<Vec<&Value>>, F: Fn(&Value) -> Option<Vec<&Value>>,
{ {
fn _walk<'a, F>(v: &'a Value, tmp: &mut Vec<&'a Value>, fun: &F) fn _walk<'a, F>(v: &'a Value, tmp: &mut Vec<&'a Value>, fun: &F)
@ -896,17 +896,17 @@ impl<'a, 'b> NodeVisitor for Selector<'a, 'b> {
} }
} }
ParseToken::Relative => { ParseToken::Relative => {
self.new_filter_context(); if let Some(ParseToken::Array) = self.tokens.last() {
} let array_token = self.tokens.pop();
ParseToken::In | ParseToken::Leaves => {
self.tokens.push(token.clone());
}
ParseToken::Array => {
if let Some(ParseToken::Leaves) = self.tokens.last() { if let Some(ParseToken::Leaves) = self.tokens.last() {
self.tokens.pop(); self.tokens.pop();
self.all_from_current(); self.all_from_current();
} }
self.tokens.push(array_token.unwrap());
}
self.new_filter_context();
}
ParseToken::In | ParseToken::Leaves | ParseToken::Array => {
self.tokens.push(token.clone()); self.tokens.push(token.clone());
} }
ParseToken::ArrayEof => { ParseToken::ArrayEof => {