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");
|
||||
});
|
||||
|
||||
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() {
|
||||
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");
|
||||
|
@ -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
|
||||
* ''backlinks'': selects the tiddlers that link to the currently selected tiddlers
|
||||
* ''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
|
||||
* ''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
|
||||
|
Loading…
Reference in New Issue
Block a user