All files / src/processors internalLinkProcessor.ts

100% Statements 7/7
100% Branches 4/4
100% Functions 3/3
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25      5x       71x     71x     71x 1x 2x         70x        
import { ObsidianUtils } from '../obsidianUtils';
import { Options } from '../options';
 
export class InternalLinkProcessor {
	private utils: ObsidianUtils;
 
	constructor(utils: ObsidianUtils) {
		this.utils = utils;
	}
 
	private regex = /(?<=[^!]|^)\[\[(?:(.*?)\|)?([^\]]*)\]\]/gm;
 
	process(markdown: string, options: Options) {
		if (options.enableLinks) {
			return markdown.replaceAll(this.regex, (sub, first, second) => {
				return `[${second}](obsidian://open?vault=${encodeURI(this.utils.getVaultName())}&file=${encodeURI(
					first == undefined ? second : first,
				)})`;
			});
		} else {
			return markdown.replaceAll(this.regex, `$2`);
		}
	}
}