mirror of
https://github.com/microsoft/vscode.git
synced 2026-06-08 16:46:42 +01:00
1327d1eb50
This changes switches to use the new `ResourceMap` type in more places in the markdown extension where we need to have a map/set with uris as the key
59 lines
2.2 KiB
TypeScript
59 lines
2.2 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import * as assert from 'assert';
|
|
import * as vscode from 'vscode';
|
|
import { ResourceMap } from '../util/resourceMap';
|
|
import { MdWorkspaceContents, SkinnyTextDocument } from '../workspaceContents';
|
|
|
|
|
|
export class InMemoryWorkspaceMarkdownDocuments implements MdWorkspaceContents {
|
|
private readonly _documents = new ResourceMap<SkinnyTextDocument>(uri => uri.fsPath);
|
|
|
|
constructor(documents: SkinnyTextDocument[]) {
|
|
for (const doc of documents) {
|
|
this._documents.set(doc.uri, doc);
|
|
}
|
|
}
|
|
|
|
public async getAllMarkdownDocuments() {
|
|
return Array.from(this._documents.values());
|
|
}
|
|
|
|
public async getMarkdownDocument(resource: vscode.Uri): Promise<SkinnyTextDocument | undefined> {
|
|
return this._documents.get(resource);
|
|
}
|
|
|
|
public async pathExists(resource: vscode.Uri): Promise<boolean> {
|
|
return this._documents.has(resource);
|
|
}
|
|
|
|
private readonly _onDidChangeMarkdownDocumentEmitter = new vscode.EventEmitter<SkinnyTextDocument>();
|
|
public onDidChangeMarkdownDocument = this._onDidChangeMarkdownDocumentEmitter.event;
|
|
|
|
private readonly _onDidCreateMarkdownDocumentEmitter = new vscode.EventEmitter<SkinnyTextDocument>();
|
|
public onDidCreateMarkdownDocument = this._onDidCreateMarkdownDocumentEmitter.event;
|
|
|
|
private readonly _onDidDeleteMarkdownDocumentEmitter = new vscode.EventEmitter<vscode.Uri>();
|
|
public onDidDeleteMarkdownDocument = this._onDidDeleteMarkdownDocumentEmitter.event;
|
|
|
|
public updateDocument(document: SkinnyTextDocument) {
|
|
this._documents.set(document.uri, document);
|
|
this._onDidChangeMarkdownDocumentEmitter.fire(document);
|
|
}
|
|
|
|
public createDocument(document: SkinnyTextDocument) {
|
|
assert.ok(!this._documents.has(document.uri));
|
|
|
|
this._documents.set(document.uri, document);
|
|
this._onDidCreateMarkdownDocumentEmitter.fire(document);
|
|
}
|
|
|
|
public deleteDocument(resource: vscode.Uri) {
|
|
this._documents.delete(resource);
|
|
this._onDidDeleteMarkdownDocumentEmitter.fire(resource);
|
|
}
|
|
}
|