From ce221b4b34862e00f29794a4d96e78ae3b737c7b Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Sun, 28 Apr 2019 03:16:06 +0300 Subject: [PATCH] still working on exiting out of .walk(..) prematurely... Signed-off-by: Alex A. Naanou --- ui (gen4)/lib/widget/browse2.js | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/ui (gen4)/lib/widget/browse2.js b/ui (gen4)/lib/widget/browse2.js index 3f1adb24..782901b5 100755 --- a/ui (gen4)/lib/widget/browse2.js +++ b/ui (gen4)/lib/widget/browse2.js @@ -937,7 +937,6 @@ var BaseBrowserPrototype = { // XXX BUG: this for some reason matches ['B', '*'] to ['nested', 'moo'] : pattern instanceof Array ? function(elem, i, path){ - console.log('%%%', path, pattern) return path.length > 0 && pattern.length == path.length && (pattern[path.length-1] == '*' @@ -949,23 +948,42 @@ var BaseBrowserPrototype = { && i == pattern } ) + /* + var Stop = new Error('Target found.') + var res + try { + //*/ + return this.walk( function(i, path, elem, doNested){ - console.log('---', i, path) if(elem && func.call(this, elem, i, path)){ - res = elem + //res = elem //throw Stop return [elem] } return [] }, function(_, i, path, sublist, options){ - // XXX skip paths... - // XXX + // XXX does not work yet... + if(pattern instanceof Array + && pattern[path.length-1] != '*' + && pattern[path.length-1] != path[path.length-1]){ + return [] + } + return sublist.search(pattern, i, path, options) }, ...args, options) + + /* XXX need to do this only in the root call... + } catch(err){ + if(err === Stop){ + return res + } + throw err + } + //*/ },