idlize
38 строк · 1.7 Кб
1/*
2* Copyright (c) 2024 Huawei Device Co., Ltd.
3* Licensed under the Apache License, Version 2.0 (the "License");
4* you may not use this file except in compliance with the License.
5* You may obtain a copy of the License at
6*
7* http://www.apache.org/licenses/LICENSE-2.0
8*
9* Unless required by applicable law or agreed to in writing, software
10* distributed under the License is distributed on an "AS IS" BASIS,
11* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12* See the License for the specific language governing permissions and
13* limitations under the License.
14*/
15
16import { DeclarationGenerator } from "./InterfacePrinter";
17import { createLanguageWriter } from "../LanguageWriters";
18import { PeerLibrary } from "../PeerLibrary";
19import { convertDeclaration } from "../TypeNodeConvertor";
20import { makeSyntheticDeclarationsFiles } from "../synthetic_declaration";
21import { ImportsCollector } from "../ImportsCollector";
22
23export function printFakeDeclarations(library: PeerLibrary): Map<string, string> {
24const lang = library.declarationTable.language
25const declarationGenerator = new DeclarationGenerator(library)
26const result = new Map<string, string>()
27for (const [filename, {dependencies, declarations}] of makeSyntheticDeclarationsFiles()) {
28const writer = createLanguageWriter(lang)
29const imports = new ImportsCollector()
30dependencies.forEach(it => imports.addFeature(it.feature, it.module))
31imports.print(writer)
32for (const node of declarations) {
33writer.print(convertDeclaration(declarationGenerator, node))
34}
35result.set(`${filename}${lang.extension}`, writer.getOutput().join('\n'))
36}
37return result
38}