mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-27 03:57:21 +00:00
Merge pull request #165 from Brennall/nextprev
Next and Previous filters plus tests and documentation
This commit is contained in:
commit
6642a6f087
43
core/modules/filters/next.js
Normal file
43
core/modules/filters/next.js
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/*\
|
||||||
|
title: $:/core/modules/filters/next.js
|
||||||
|
type: application/javascript
|
||||||
|
module-type: filteroperator
|
||||||
|
|
||||||
|
Filter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler
|
||||||
|
|
||||||
|
\*/
|
||||||
|
(function(){
|
||||||
|
|
||||||
|
/*jslint node: true, browser: true */
|
||||||
|
/*global $tw: false */
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
/*
|
||||||
|
Export our filter function
|
||||||
|
*/
|
||||||
|
exports.next = function(source,operator,options) {
|
||||||
|
var results = [],
|
||||||
|
list = options.wiki.getTiddlerList(operator.operand);
|
||||||
|
|
||||||
|
function checkTiddler(title) {
|
||||||
|
var match = list.indexOf(title);
|
||||||
|
// increment match and then test if result is in range
|
||||||
|
match++;
|
||||||
|
if(match > 0 && match < list.length) {
|
||||||
|
results.push(list[match]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Iterate through the source tiddlers
|
||||||
|
if($tw.utils.isArray(source)) {
|
||||||
|
$tw.utils.each(source,function(title) {
|
||||||
|
checkTiddler(title);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$tw.utils.each(source,function(element,title) {
|
||||||
|
checkTiddler(title);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
};
|
||||||
|
|
||||||
|
})();
|
43
core/modules/filters/previous.js
Normal file
43
core/modules/filters/previous.js
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/*\
|
||||||
|
title: $:/core/modules/filters/previous.js
|
||||||
|
type: application/javascript
|
||||||
|
module-type: filteroperator
|
||||||
|
|
||||||
|
Filter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler
|
||||||
|
|
||||||
|
\*/
|
||||||
|
(function(){
|
||||||
|
|
||||||
|
/*jslint node: true, browser: true */
|
||||||
|
/*global $tw: false */
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
/*
|
||||||
|
Export our filter function
|
||||||
|
*/
|
||||||
|
exports.previous = function(source,operator,options) {
|
||||||
|
var results = [],
|
||||||
|
list = options.wiki.getTiddlerList(operator.operand);
|
||||||
|
|
||||||
|
function checkTiddler(title) {
|
||||||
|
var match = list.indexOf(title);
|
||||||
|
// decrement match and then test if result is in range
|
||||||
|
match--;
|
||||||
|
if( match >= 0 ) {
|
||||||
|
results.push(list[match]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Iterate through the source tiddlers
|
||||||
|
if($tw.utils.isArray(source)) {
|
||||||
|
$tw.utils.each(source,function(title) {
|
||||||
|
checkTiddler(title);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$tw.utils.each(source,function(element,title) {
|
||||||
|
checkTiddler(title);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
};
|
||||||
|
|
||||||
|
})();
|
@ -148,6 +148,16 @@ describe("Filter tests", function() {
|
|||||||
expect(wiki.filterTiddlers("[tag[one]list[TiddlerSeventh]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne");
|
expect(wiki.filterTiddlers("[tag[one]list[TiddlerSeventh]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should handle the next operator", function() {
|
||||||
|
expect(wiki.filterTiddlers("[[Tiddler Three]next[TiddlerSeventh]]").join(",")).toBe("a fourth tiddler");
|
||||||
|
expect(wiki.filterTiddlers("[[MissingTiddler]next[TiddlerSeventh]]").join(",")).toBe("");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should handle the previous operator", function() {
|
||||||
|
expect(wiki.filterTiddlers("[[Tiddler Three]previous[TiddlerSeventh]]").join(",")).toBe("TiddlerOne");
|
||||||
|
expect(wiki.filterTiddlers("[[TiddlerOne]previous[TiddlerSeventh]]").join(",")).toBe("");
|
||||||
|
});
|
||||||
|
|
||||||
it("should handle the search operator", function() {
|
it("should handle the search operator", function() {
|
||||||
expect(wiki.filterTiddlers("[search[the]sort[title]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three,TiddlerOne");
|
expect(wiki.filterTiddlers("[search[the]sort[title]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three,TiddlerOne");
|
||||||
expect(wiki.filterTiddlers("[search{Tiddler8}sort[title]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three,TiddlerOne");
|
expect(wiki.filterTiddlers("[search{Tiddler8}sort[title]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three,TiddlerOne");
|
||||||
|
@ -48,6 +48,8 @@ A filter string consists of one or more runs of filter operators that each look
|
|||||||
* ''links'': selects the outgoing links on the currently selected tiddlers
|
* ''links'': selects the outgoing links on the currently selected tiddlers
|
||||||
* ''backlinks'': selects the tiddlers that link to the currently selected tiddlers
|
* ''backlinks'': selects the tiddlers that link to the currently selected tiddlers
|
||||||
* ''list'': selects the tiddlers listed in a specified [[TiddlerList|TiddlerLists]]
|
* ''list'': selects the tiddlers listed in a specified [[TiddlerList|TiddlerLists]]
|
||||||
|
* ''next'': selects the next item in a TiddlerList after the current tiddler
|
||||||
|
* ''previous'': selects the previous item in a TiddlerList before the current tiddler
|
||||||
* ''listed'': selects the TiddlerLists that include the current tiddler
|
* ''listed'': selects the TiddlerLists that include the current tiddler
|
||||||
* ''each'': selects one tiddler for each discrete value of the specified field
|
* ''each'': selects one tiddler for each discrete value of the specified field
|
||||||
* ''eachday'': selects one tiddler for each discrete day in the specified date field
|
* ''eachday'': selects one tiddler for each discrete day in the specified date field
|
||||||
|
Loading…
Reference in New Issue
Block a user