diff --git a/lib/utils/link_resolver.dart b/lib/utils/link_resolver.dart index 5e0c6236..3295c852 100644 --- a/lib/utils/link_resolver.dart +++ b/lib/utils/link_resolver.dart @@ -7,7 +7,7 @@ class LinkResolver { Note resolve(String link) { var spec = link; - var parent = inputNote.parent; + var rootFolder = inputNote.parent.rootFolder; if (link.startsWith('[[') && link.endsWith(']]') && link.length > 4) { // FIXME: What if the case is different? @@ -18,20 +18,20 @@ class LinkResolver { spec = link.substring(2); } - var linkedNote = parent.getNoteWithSpec(spec); + var linkedNote = rootFolder.getNoteWithSpec(spec); if (linkedNote != null) { return linkedNote; } if (!spec.endsWith('.md')) { - linkedNote = parent.getNoteWithSpec(spec + '.md'); + linkedNote = rootFolder.getNoteWithSpec(spec + '.md'); if (linkedNote != null) { return linkedNote; } } if (!spec.endsWith('.txt')) { - linkedNote = parent.getNoteWithSpec(spec + '.txt'); + linkedNote = rootFolder.getNoteWithSpec(spec + '.txt'); if (linkedNote != null) { return linkedNote; } diff --git a/test/link_resolver_test.dart b/test/link_resolver_test.dart index a32e2691..6f199114 100644 --- a/test/link_resolver_test.dart +++ b/test/link_resolver_test.dart @@ -75,6 +75,14 @@ void main() { var resolvedNote = linkResolver.resolve('[[zeplin]]'); expect(resolvedNote.filePath, p.join(tempDir.path, 'zeplin.txt')); }); + + test('Non base path [[Fire]] should resolve to [[Fire.md]]', () { + var note = rootFolder.getNoteWithSpec('Folder/Water.md'); + var linkResolver = LinkResolver(note); + + var resolvedNote = linkResolver.resolve('[[Fire]]'); + expect(resolvedNote.filePath, p.join(tempDir.path, 'Fire.md')); + }); } Future generateNote(String basePath, String path) async {