TiddlyWiki.org

Ticket #381: jonl.patch

File jonl.patch, 1.3 kB (added by jayfresh, 1 year ago)
  • TiddlyWiki.js

    old new  
    530530        return this.saver; 
    531531}; 
    532532 
     533// Filter a list of tiddlers 
     534//#   filter - filter expression (eg "tidlertitle [[multi word tiddler title]] [tag[systemConfig]]") 
     535//# Returns an array of Tiddler() objects that match the filter expression 
     536TiddlyWiki.prototype.filterTiddlers = function(filter) 
     537{ 
     538        var results = []; 
     539        if(filter) { 
     540                var re = /(\w+)|(?:\[([ \w]+)\[([ \w]+)\]\])|(?:\[\[([ \w]+)\]\])/mg; 
     541                var match = re.exec(filter); 
     542                while(match) { 
     543                        if(match[1]) { 
     544                                //# matches (eg) text 
     545                                var tiddler = this.fetchTiddler(match[1]) 
     546                                if(tiddler) 
     547                                        results.push(tiddler); 
     548                        } else if(match[2]) { 
     549                                //# matches (eg) [text[more text]] 
     550                                if(match[2]=="tag") { 
     551                                        this.forEachTiddler(function(title,tiddler) { 
     552                                                if(tiddler.isTaggedAllOf(match[3].split(" "))) { 
     553                                                        results.push(tiddler); 
     554                                                } else displayMessage(match[3]); 
     555                                        }); 
     556                                } 
     557                        } else if(match[4]) { 
     558                                //# matches (eg) [[tiddler title]] 
     559                                var tiddler = this.fetchTiddler(match[4]) 
     560                                if(tiddler) 
     561                                        results.push(tiddler); 
     562                        }                        
     563                        match = re.exec(filter); 
     564                } 
     565        } else { 
     566                this.forEachTiddler(function(title,tiddler) {results.push(tiddler);}); 
     567        } 
     568        return results; 
     569};