Leaves 처리 위치 변경

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

View File

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