| 1 | Index: test/js/TiddlyWiki.js |
|---|
| 2 | =================================================================== |
|---|
| 3 | --- test/js/TiddlyWiki.js (revision 12456) |
|---|
| 4 | +++ test/js/TiddlyWiki.js (working copy) |
|---|
| 5 | @@ -1,7 +1,25 @@ |
|---|
| 6 | jQuery(document).ready(function(){ |
|---|
| 7 | + var module_tiddlers = [{title: "tvalue1", tags: ["twtesthello"], fields: {xyz:"bar"}}, |
|---|
| 8 | + {title: "tvalue2", tags: []}, |
|---|
| 9 | + {title: "tvalue3", tags: ["twtesthello", "goodbye"], fields: {xyz: "bar"}}, |
|---|
| 10 | + {title: "tvalue4", tags: ["what"], fields:{xyz:"bar"}}, |
|---|
| 11 | + {title: "tvalue5", tags: [], fields:{xyz:"barz"}} |
|---|
| 12 | + ]; |
|---|
| 13 | + module("TiddlyWiki.js", { |
|---|
| 14 | + setup: function() { |
|---|
| 15 | + for(var i = 0; i < module_tiddlers.length; i++) { |
|---|
| 16 | + var tid = module_tiddlers[i]; |
|---|
| 17 | + store.saveTiddler(tid.title, tid.title, tid.text, null, null, tid.tags, tid.fields); |
|---|
| 18 | + } |
|---|
| 19 | + }, |
|---|
| 20 | + teardown: function() { |
|---|
| 21 | + for(var i = 0; i < module_tiddlers.length; i++) { |
|---|
| 22 | + var tid = module_tiddlers[i]; |
|---|
| 23 | + store.removeTiddler(tid.title); |
|---|
| 24 | + } |
|---|
| 25 | + } |
|---|
| 26 | + }); |
|---|
| 27 | |
|---|
| 28 | - module("TiddlyWiki.js"); |
|---|
| 29 | - |
|---|
| 30 | test("Slices: calcAllSlices()", function() { |
|---|
| 31 | |
|---|
| 32 | var store = new TiddlyWiki(); |
|---|
| 33 | @@ -268,4 +286,26 @@ |
|---|
| 34 | |
|---|
| 35 | }); |
|---|
| 36 | |
|---|
| 37 | + |
|---|
| 38 | + test("getTaggedTiddlers", function() { |
|---|
| 39 | + var tiddlers = store.getTaggedTiddlers("twtesthello"); |
|---|
| 40 | + strictEqual(tiddlers.length, 2); |
|---|
| 41 | + }); |
|---|
| 42 | + |
|---|
| 43 | + test("getValueTiddlers", function() { |
|---|
| 44 | + var tiddlers = store.getValueTiddlers("xyz", "bar"); |
|---|
| 45 | + var tiddlers2 = store.getValueTiddlers("tags", "twtesthello"); |
|---|
| 46 | + strictEqual(tiddlers.length, 3); |
|---|
| 47 | + }); |
|---|
| 48 | + |
|---|
| 49 | + test("filterTiddlers", function() { |
|---|
| 50 | + var tiddlers = store.filterTiddlers("[tag[twtesthello]]"); |
|---|
| 51 | + var tiddlers2 = store.filterTiddlers("[xyz[bar]]"); |
|---|
| 52 | + var tiddlers3 = store.filterTiddlers("[tag[twtesthello]][limit[1]]"); |
|---|
| 53 | + var tiddlers4 = store.filterTiddlers("[xyz[bar]][limit[2]]"); |
|---|
| 54 | + strictEqual(tiddlers.length, 2); |
|---|
| 55 | + strictEqual(tiddlers2.length, 3); |
|---|
| 56 | + strictEqual(tiddlers3.length, 1); |
|---|
| 57 | + strictEqual(tiddlers4.length, 2); |
|---|
| 58 | + }); |
|---|
| 59 | }); |
|---|
| 60 | Index: js/TiddlyWiki.js |
|---|
| 61 | =================================================================== |
|---|
| 62 | --- js/TiddlyWiki.js (revision 12456) |
|---|
| 63 | +++ js/TiddlyWiki.js (working copy) |
|---|
| 64 | @@ -480,6 +480,11 @@ |
|---|
| 65 | return this.reverseLookup("tags",tag,true,sortField); |
|---|
| 66 | }; |
|---|
| 67 | |
|---|
| 68 | +TiddlyWiki.prototype.getValueTiddlers = function(field,value,sortField) |
|---|
| 69 | +{ |
|---|
| 70 | + return this.reverseLookup(field,value,true,sortField); |
|---|
| 71 | +}; |
|---|
| 72 | + |
|---|
| 73 | // Return an array of the tiddlers that link to a given tiddler |
|---|
| 74 | TiddlyWiki.prototype.getReferringTiddlers = function(title,unusedParameter,sortField) |
|---|
| 75 | { |
|---|
| 76 | @@ -495,8 +500,14 @@ |
|---|
| 77 | var results = []; |
|---|
| 78 | this.forEachTiddler(function(title,tiddler) { |
|---|
| 79 | var f = !lookupMatch; |
|---|
| 80 | - for(var lookup=0; lookup<tiddler[lookupField].length; lookup++) { |
|---|
| 81 | - if(tiddler[lookupField][lookup] == lookupValue) |
|---|
| 82 | + var values; |
|---|
| 83 | + if(["links", "tags"].contains(lookupField)) { |
|---|
| 84 | + values = tiddler[lookupField]; |
|---|
| 85 | + } else { |
|---|
| 86 | + values = tiddler.fields[lookupField] ? [tiddler.fields[lookupField]] : []; |
|---|
| 87 | + } |
|---|
| 88 | + for(var lookup=0; lookup<values.length; lookup++) { |
|---|
| 89 | + if(values[lookup] == lookupValue) |
|---|
| 90 | f = lookupMatch; |
|---|
| 91 | } |
|---|
| 92 | if(f) |
|---|
| 93 | @@ -618,6 +629,14 @@ |
|---|
| 94 | case "sort": |
|---|
| 95 | results = this.sortTiddlers(results,match[3]); |
|---|
| 96 | break; |
|---|
| 97 | + case "limit": |
|---|
| 98 | + results = results.slice(0, parseInt(match[3],10)); |
|---|
| 99 | + break; |
|---|
| 100 | + default: |
|---|
| 101 | + var matched = this.getValueTiddlers(match[2],match[3]); |
|---|
| 102 | + for(var m = 0; m < matched.length; m++) |
|---|
| 103 | + results.pushUnique(matched[m]); |
|---|
| 104 | + break; |
|---|
| 105 | } |
|---|
| 106 | } |
|---|
| 107 | match = re.exec(filter); |
|---|