My first JavaScript macro if anyone cares, using the code above.
It's useful when creating lists based on tags.
For example, if a list is made by filtering by several different tags, you might want to display which tag caused an item to be on the list. You would need to mark those tags somehow, the way I do it is by using a prefix feed--, as in feed--foo and feed--bar, and so on. Then when generating the list within a <$list>, you can use <<match-tag """^feed--""">>.
/*\
title: return-feed
type: application/javascript
module-type: macro
2020-05-24-18-49-31
Macro to return the matched tags of the currentTiddler given a regular expression.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
// The name of the macro, it doesn't have to be the same as this tiddler. This is how the macro is called.
exports.name = "match-tag";
// Parameters given to the macro when it is called.
exports.params = [
{name: "regularExpression"}
];
// Run the macro.
exports.run = function(regularExpression) {
// Get the tag list.
var tags = this.wiki.getTiddler(this.getVariable("currentTiddler")).getFieldString("tags").split(" ");
// Convert regularExpression from a string to a RegExp.
regularExpression = new RegExp(regularExpression);
// Really this is a string, but TiddlyWiki calls it a list.
var returnList = "";
// For every tag, see if it matches the regularExpression, if it does, add it to the returnList.
var i;
for (i = 0; i < tags.length; i++) {
if (tags[i].search(regularExpression) !== -1) {
if (i === 0) {
returnList = tags[i];
} else {
returnList = returnList.concat(" ", tags[i]);
}
}
}
return returnList;
};
})();
Kalcifer