mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-04-12 13:53:13 +00:00
Fixed RSoD error with moduleproperty filter operator (#8958)
* Fixed RSoD error with moduleproperty filter operator * No RSoD when getting non-string objects as well
This commit is contained in:
parent
c25d6c11da
commit
636dae6c58
@ -18,9 +18,16 @@ Export our filter function
|
||||
exports.moduleproperty = function(source,operator,options) {
|
||||
var results = [];
|
||||
source(function(tiddler,title) {
|
||||
var value = require(title)[operator.operand || ""];
|
||||
if(value !== undefined) {
|
||||
results.push(value);
|
||||
try {
|
||||
var value = require(title)[operator.operand || ""];
|
||||
if(value !== undefined) {
|
||||
if(typeof value !== "string") {
|
||||
value = JSON.stringify(value);
|
||||
}
|
||||
results.push(value);
|
||||
}
|
||||
} catch(e) {
|
||||
// Do nothing. It probably wasn't a module.
|
||||
}
|
||||
});
|
||||
results.sort();
|
||||
|
@ -1134,6 +1134,16 @@ Tests the filtering mechanism.
|
||||
expect(wiki.filterTiddlers("[[<>:\"/\\|?*]encodeuricomponent[]]").join(",")).toBe("%3C%3E%3A%22%2F%5C%7C%3F%2A");
|
||||
});
|
||||
|
||||
it("should handle the moduleproperty operator", function() {
|
||||
// We don't need to confirm them all, only it it finds at least one module name that we're sure is there.
|
||||
expect(wiki.filterTiddlers("[[macro]modules[]moduleproperty[name]]")).toContain("qualify");
|
||||
// No such property. Nothing to return.
|
||||
expect(wiki.filterTiddlers("[[macro]modules[]moduleproperty[nonexistent]]").length).toBe(0);
|
||||
// No such tiddlers. Nothing to return.
|
||||
expect(wiki.filterTiddlers("[[nonexistent]moduleproperty[name]]").length).toBe(0);
|
||||
// Non string properties should get toStringed.
|
||||
expect(wiki.filterTiddlers("[[$:/core/modules/commands/init.js]moduleproperty[info]]").join(" ")).toBe('{"name":"init","synchronous":true}');
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user