be3e823608
git-subtree-dir: lib/vscode git-subtree-split: e5a624b788d92b8d34d1392e4c4d9789406efe8f
39 lines
1.2 KiB
TypeScript
39 lines
1.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 { IHTMLDataProvider, newHTMLDataProvider } from 'vscode-html-languageservice';
|
|
import { RequestService } from './requests';
|
|
|
|
export function fetchHTMLDataProviders(dataPaths: string[], requestService: RequestService): Promise<IHTMLDataProvider[]> {
|
|
const providers = dataPaths.map(async p => {
|
|
try {
|
|
const content = await requestService.getContent(p);
|
|
return parseHTMLData(p, content);
|
|
} catch (e) {
|
|
return newHTMLDataProvider(p, { version: 1 });
|
|
}
|
|
});
|
|
|
|
return Promise.all(providers);
|
|
}
|
|
|
|
function parseHTMLData(id: string, source: string): IHTMLDataProvider {
|
|
let rawData: any;
|
|
|
|
try {
|
|
rawData = JSON.parse(source);
|
|
} catch (err) {
|
|
return newHTMLDataProvider(id, { version: 1 });
|
|
}
|
|
|
|
return newHTMLDataProvider(id, {
|
|
version: rawData.version || 1,
|
|
tags: rawData.tags || [],
|
|
globalAttributes: rawData.globalAttributes || [],
|
|
valueSets: rawData.valueSets || []
|
|
});
|
|
}
|
|
|