Ticket #381: ticket381.patch
| File ticket381.patch, 4.6 kB (added by MartinBudden, 13 months ago) |
|---|
-
js/TiddlyWiki.js
530 530 return this.saver; 531 531 }; 532 532 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 536 TiddlyWiki.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.isTagged(match[3])) 553 results.push(tiddler); 554 }); 555 } 556 } else if(match[4]) { 557 //# matches (eg) [[tiddler title]] 558 var tiddler = this.fetchTiddler(match[4]) 559 if(tiddler) 560 results.push(tiddler); 561 } 562 match = re.exec(filter); 563 } 564 } else { 565 this.forEachTiddler(function(title,tiddler) {results.push(tiddler);}); 566 } 567 return results; 568 }; 569 -
js/main.js
82 82 { 83 83 invokeParamifier(params,"onstart"); 84 84 if(story.isEmpty()) { 85 var defaultParams = store.getTiddlerText("DefaultTiddlers").parseParams("open",null,false); 86 invokeParamifier(defaultParams,"onstart"); 85 var tiddlers = store.filterTiddlers(store.getTiddlerText("DefaultTiddlers")); 86 for(var t=0; t<tiddlers.length; t++) { 87 story.displayTiddler("bottom",tiddlers[t].title); 88 } 87 89 } 88 90 window.scrollTo(0,0); 89 91 } -
js/FileAdaptor.js
89 89 }; 90 90 91 91 // Gets the list of tiddlers within a given workspace 92 //# callback - function to be called on completion93 92 //# context - passed on to callback function 93 //# userParams - user parameters passed through to the callback function 94 //# callback - function to be called on completion 95 //# filter - filter expression 94 96 //# Return value is true if the request was successfully issued, 95 97 //# or an error description string if there was a problem 96 98 //# The callback parameters are callback(status,adaptor,context,tiddlerList) … … 98 100 //# adaptor - reference to this adaptor object 99 101 //# context - parameters as originally passed into the getTiddlerList function 100 102 //# tiddlerList - array of objects describing each tiddler 101 FileAdaptor.prototype.getTiddlerList = function(context,userParams,callback )103 FileAdaptor.prototype.getTiddlerList = function(context,userParams,callback,filter) 102 104 { 103 105 if(!this.store) 104 106 return FileAdaptor.NotLoadedError; 105 107 if(!context) 106 108 context = {}; 107 context.tiddlers = []; 108 this.store.forEachTiddler(function(title,tiddler) 109 { 110 var t = new Tiddler(title); 111 t.text = tiddler.text; 112 t.modified = tiddler.modified; 113 t.modifier = tiddler.modifier; 114 t.fields['server.page.revision'] = tiddler.modified.convertToYYYYMMDDHHMM(); 115 t.tags = tiddler.tags; 116 context.tiddlers.push(t); 117 }); 109 context.tiddlers = this.store.filterTiddlers(filter); 110 for(var t=0; t<context.tiddlers.length; t++) { 111 context.tiddlers[t].fields['server.page.revision'] = context.tiddlers[t].modified.convertToYYYYMMDDHHMM(); 112 } 118 113 context.status = true; 119 114 window.setTimeout(function() {callback(context,userParams);},10); 120 115 return true; -
js/Config.js
105 105 missing: {}, 106 106 orphans: {}, 107 107 shadowed: {}, 108 touched: {} 108 touched: {}, 109 filter: {} 109 110 }, 110 111 closeAll: {}, 111 112 permaview: {}, -
js/Macros.js
60 60 return store.getTouched(); 61 61 }; 62 62 63 config.macros.list.filter.handler = function(params) 64 { 65 var filter = params[1]; 66 var results = []; 67 if(filter) { 68 var tiddlers = store.filterTiddlers(filter); 69 for(var t=0; t<tiddlers.length; t++) 70 results.push(tiddlers[t].title); 71 } 72 return results; 73 }; 74 63 75 config.macros.allTags.handler = function(place,macroName,params) 64 76 { 65 77 var tags = store.getTags(params[0]);
