2023-07-14 19:05:02 +08:00

46 lines
1.6 KiB
JavaScript

/* eslint-disable @typescript-eslint/naming-convention */
const fs = require('fs');
const vscode = require('vscode');
const vhd2vl = require("./vhd2vlog");
/**
*
* @param {vscode.Uri} uri
* @return {Promise<void>}
*/
async function vhdl2vlog(uri) {
const path = uri.fsPath.replace(/\\/g, '/');
const Module = await vhd2vl();
const content = fs.readFileSync(path, "utf-8");
const status = Module.ccall('vhdlParse', '', ['string'], [content]);
if (!status) {
content = Module.ccall('getVlog', 'string', ['string'], []);
vscode.window.showSaveDialog({
filters: {
verilog: ["v", "V", "vh", "vl"], // 文件类型过滤
},
}).then(fileInfos => {
let path_full = fileInfos === null || fileInfos === void 0 ? void 0 : fileInfos.path;
if (path_full !== undefined) {
if (path_full[0] === '/' && require('os').platform() === 'win32') {
path_full = path_full.substring(1);
}
fs.writeFileSync(path_full, content, "utf-8");
vscode.window.showInformationMessage("translate successfully");
const options = {
preview: false,
viewColumn: vscode.ViewColumn.Two
};
vscode.window.showTextDocument(vscode.Uri.file(path_full), options);
}
});
} else {
const error = Module.ccall('getErr', 'string', ['string'], []);
vscode.window.showErrorMessage(error);
}
}
module.exports = {
vhdl2vlog
};