mirror of
https://github.com/Microsoft/vscode
synced 2024-09-13 21:55:38 +00:00
Inject slugifier into markdown engine
This commit is contained in:
parent
756de81a55
commit
feeefd1037
|
@ -17,6 +17,7 @@ import { MarkdownEngine } from './markdownEngine';
|
|||
import { getMarkdownExtensionContributions } from './markdownExtensions';
|
||||
import { ExtensionContentSecurityPolicyArbiter, PreviewSecuritySelector } from './security';
|
||||
import { loadDefaultTelemetryReporter } from './telemetryReporter';
|
||||
import { stripSlugifier } from './slugify';
|
||||
|
||||
|
||||
export function activate(context: vscode.ExtensionContext) {
|
||||
|
@ -26,7 +27,7 @@ export function activate(context: vscode.ExtensionContext) {
|
|||
const contributions = getMarkdownExtensionContributions();
|
||||
|
||||
const cspArbiter = new ExtensionContentSecurityPolicyArbiter(context.globalState, context.workspaceState);
|
||||
const engine = new MarkdownEngine(contributions);
|
||||
const engine = new MarkdownEngine(contributions, stripSlugifier);
|
||||
const logger = new Logger();
|
||||
|
||||
const selector: vscode.DocumentSelector = [
|
||||
|
|
|
@ -7,7 +7,7 @@ import { MarkdownIt, Token } from 'markdown-it';
|
|||
import * as path from 'path';
|
||||
import * as vscode from 'vscode';
|
||||
import { MarkdownContributions } from './markdownExtensions';
|
||||
import { stripSlugifier } from './slugify';
|
||||
import { Slugifier } from './slugify';
|
||||
|
||||
const FrontMatterRegex = /^---\s*[^]*?(-{3}|\.{3})\s*/;
|
||||
|
||||
|
@ -19,7 +19,8 @@ export class MarkdownEngine {
|
|||
private currentDocument?: vscode.Uri;
|
||||
|
||||
public constructor(
|
||||
private readonly extensionPreviewResourceProvider: MarkdownContributions
|
||||
private readonly extensionPreviewResourceProvider: MarkdownContributions,
|
||||
private readonly slugifier: Slugifier,
|
||||
) { }
|
||||
|
||||
private usePlugin(factory: (md: any) => any): void {
|
||||
|
@ -49,7 +50,7 @@ export class MarkdownEngine {
|
|||
return `<pre class="hljs"><code><div>${this.md!.utils.escapeHtml(str)}</div></code></pre>`;
|
||||
}
|
||||
}).use(mdnh, {
|
||||
slugify: (header: string) => stripSlugifier.fromHeading(header).value
|
||||
slugify: (header: string) => this.slugifier.fromHeading(header).value
|
||||
});
|
||||
|
||||
for (const plugin of this.extensionPreviewResourceProvider.markdownItPlugins) {
|
||||
|
@ -145,13 +146,13 @@ export class MarkdownEngine {
|
|||
|
||||
if (fragment) {
|
||||
uri = uri.with({
|
||||
fragment: stripSlugifier.fromHeading(fragment).value
|
||||
fragment: this.slugifier.fromHeading(fragment).value
|
||||
});
|
||||
}
|
||||
return normalizeLink(uri.with({ scheme: 'vscode-resource' }).toString(true));
|
||||
} else if (!uri.scheme && !uri.path && uri.fragment) {
|
||||
return normalizeLink(uri.with({
|
||||
fragment: stripSlugifier.fromHeading(uri.fragment).value
|
||||
fragment: this.slugifier.fromHeading(uri.fragment).value
|
||||
}).toString(true));
|
||||
}
|
||||
} catch (e) {
|
||||
|
|
|
@ -6,13 +6,15 @@
|
|||
import * as vscode from 'vscode';
|
||||
import { MarkdownEngine } from '../markdownEngine';
|
||||
import { MarkdownContributions } from '../markdownExtensions';
|
||||
import { stripSlugifier } from '../slugify';
|
||||
|
||||
const emptyContributions = new class implements MarkdownContributions {
|
||||
readonly previewScripts: vscode.Uri[] = [];
|
||||
readonly previewStyles: vscode.Uri[] = [];
|
||||
readonly previewResourceRoots: vscode.Uri[] = [];
|
||||
readonly markdownItPlugins: Promise<(md: any) => any>[] = [];
|
||||
};
|
||||
|
||||
export function createNewMarkdownEngine(): MarkdownEngine {
|
||||
return new MarkdownEngine(new class implements MarkdownContributions {
|
||||
readonly previewScripts: vscode.Uri[] = [];
|
||||
readonly previewStyles: vscode.Uri[] = [];
|
||||
readonly previewResourceRoots: vscode.Uri[] = [];
|
||||
readonly markdownItPlugins: Promise<(md: any) => any>[] = [];
|
||||
});
|
||||
return new MarkdownEngine(emptyContributions, stripSlugifier);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue