mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-29 18:38:36 +08:00
Fix relative Markdown links
While implementing Wiki Links, I seem to have accidentally broken them.
This commit is contained in:
@ -9,11 +9,14 @@ class LinkResolver {
|
|||||||
|
|
||||||
Note resolve(String link) {
|
Note resolve(String link) {
|
||||||
var spec = link;
|
var spec = link;
|
||||||
var rootFolder = inputNote.parent.rootFolder;
|
var folder = inputNote.parent;
|
||||||
|
|
||||||
if (link.startsWith('[[') && link.endsWith(']]') && link.length > 4) {
|
if (link.startsWith('[[') && link.endsWith(']]') && link.length > 4) {
|
||||||
// FIXME: What if the case is different?
|
// FIXME: What if the case is different?
|
||||||
spec = link.substring(2, link.length - 2).trim();
|
spec = link.substring(2, link.length - 2).trim();
|
||||||
|
|
||||||
|
// In the case of Wiki Links we always resolve from the Root Folder
|
||||||
|
folder = inputNote.parent.rootFolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (link.startsWith('./')) {
|
if (link.startsWith('./')) {
|
||||||
@ -24,20 +27,20 @@ class LinkResolver {
|
|||||||
spec = p.normalize(spec);
|
spec = p.normalize(spec);
|
||||||
}
|
}
|
||||||
|
|
||||||
var linkedNote = rootFolder.getNoteWithSpec(spec);
|
var linkedNote = folder.getNoteWithSpec(spec);
|
||||||
if (linkedNote != null) {
|
if (linkedNote != null) {
|
||||||
return linkedNote;
|
return linkedNote;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!spec.endsWith('.md')) {
|
if (!spec.endsWith('.md')) {
|
||||||
linkedNote = rootFolder.getNoteWithSpec(spec + '.md');
|
linkedNote = folder.getNoteWithSpec(spec + '.md');
|
||||||
if (linkedNote != null) {
|
if (linkedNote != null) {
|
||||||
return linkedNote;
|
return linkedNote;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!spec.endsWith('.txt')) {
|
if (!spec.endsWith('.txt')) {
|
||||||
linkedNote = rootFolder.getNoteWithSpec(spec + '.txt');
|
linkedNote = folder.getNoteWithSpec(spec + '.txt');
|
||||||
if (linkedNote != null) {
|
if (linkedNote != null) {
|
||||||
return linkedNote;
|
return linkedNote;
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ void main() {
|
|||||||
await generateNote(tempDir.path, "Hello.md");
|
await generateNote(tempDir.path, "Hello.md");
|
||||||
await generateNote(tempDir.path, "Fire.md");
|
await generateNote(tempDir.path, "Fire.md");
|
||||||
await generateNote(tempDir.path, "Folder/Water.md");
|
await generateNote(tempDir.path, "Folder/Water.md");
|
||||||
|
await generateNote(tempDir.path, "Folder/Sodium.md");
|
||||||
await generateNote(tempDir.path, "Air Bender.md");
|
await generateNote(tempDir.path, "Air Bender.md");
|
||||||
await generateNote(tempDir.path, "zeplin.txt");
|
await generateNote(tempDir.path, "zeplin.txt");
|
||||||
await generateNote(tempDir.path, "Goat Sim.md");
|
await generateNote(tempDir.path, "Goat Sim.md");
|
||||||
@ -109,6 +110,14 @@ void main() {
|
|||||||
expect(resolvedNote.filePath, p.join(tempDir.path, 'Hello.md'));
|
expect(resolvedNote.filePath, p.join(tempDir.path, 'Hello.md'));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Normal relative link inside a subFolder', () {
|
||||||
|
var note = rootFolder.getNoteWithSpec('Folder/Water.md');
|
||||||
|
var linkResolver = LinkResolver(note);
|
||||||
|
|
||||||
|
var resolvedNote = linkResolver.resolve('./Sodium.md');
|
||||||
|
expect(resolvedNote.filePath, p.join(tempDir.path, 'Folder/Sodium.md'));
|
||||||
|
});
|
||||||
|
|
||||||
test('Normal relative link without ./', () {
|
test('Normal relative link without ./', () {
|
||||||
var note = rootFolder.notes[0];
|
var note = rootFolder.notes[0];
|
||||||
var linkResolver = LinkResolver(note);
|
var linkResolver = LinkResolver(note);
|
||||||
|
Reference in New Issue
Block a user