1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2025-01-18 05:02:52 +00:00

fix: only fallback to title when {{!!xxx}}, not when input is empty

This commit is contained in:
lin onetwo 2024-06-17 17:45:16 +08:00
parent 30dae0c60d
commit 967657c6dd
2 changed files with 16 additions and 5 deletions

View File

@ -564,18 +564,23 @@ exports.extractTranscludes = function(parseTreeRoot, title) {
var value;
// if it is Transclusion with Templates like `{{Index||$:/core/ui/TagTemplate}}`, the `$tiddler` will point to the template. We need to find the actual target tiddler from parent node
if(parentNode && parentNode.type === "tiddler" && parentNode.attributes.tiddler && parentNode.attributes.tiddler.type === "string") {
value = parentNode.attributes.tiddler.value;
// Empty value (like `{{!!field}}`) means self-referential transclusion.
value = parentNode.attributes.tiddler.value || title;
} else {
value = parseTreeNode.attributes.$tiddler.value;
}
} else if(parseTreeNode.attributes.tiddler && parseTreeNode.attributes.tiddler.type === "string") {
// Old transclude widget usage
value = parseTreeNode.attributes.tiddler.value;
}
if (!value) {
} else if(parseTreeNode.attributes.$field && parseTreeNode.attributes.$field.type === "string") {
// Empty value (like `<$transclude $field='created'/>`) means self-referential transclusion.
value = title;
} else if(parseTreeNode.attributes.field && parseTreeNode.attributes.field.type === "string") {
// Old usage with Empty value (like `<$transclude field='created'/>`)
value = title;
}
// Empty value (like `{{!!field}}`) means self-referential transclusion. Also deduplicate the result.
if(transcludes.indexOf(value) === -1) {
// Deduplicate the result.
if(value && transcludes.indexOf(value) === -1) {
transcludes.push(value);
}
}

View File

@ -22,6 +22,9 @@ describe('Backtranscludes and transclude filter tests', function() {
it('should have no backtranscludes', function() {
expect(wiki.filterTiddlers('TestIncoming +[backtranscludes[]]').join(',')).toBe('');
});
it('should have no transcludes', function() {
expect(wiki.filterTiddlers('TestIncoming +[transcludes[]]').join(',')).toBe('');
});
});
describe('A tiddler added to the wiki with a transclude to it', function() {
@ -38,6 +41,9 @@ describe('Backtranscludes and transclude filter tests', function() {
it('should have a backtransclude', function() {
expect(wiki.filterTiddlers('TestIncoming +[backtranscludes[]]').join(',')).toBe('TestOutgoing');
});
it('should have a transclude', function() {
expect(wiki.filterTiddlers('TestOutgoing +[transcludes[]]').join(',')).toBe('TestIncoming');
});
});
describe('A tiddler transclude with template will still use the tiddler as result.', function() {