@bitloops/bl-transpiler
Version:
The one and only Bitloops Language transpiler
38 lines • 2.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TargetGenerator = void 0;
const getTargetFileDestination_js_1 = require("./typescript-nest/helpers/getTargetFileDestination.js");
const supportedLanguages_js_1 = require("./supportedLanguages.js");
const index_js_1 = require("./typescript-nest/ast/index.js");
const targetCoreCreator_js_1 = require("./targetCoreCreator.js");
const targetSetupCreator_js_1 = require("./targetSetupCreator.js");
class TargetGenerator {
generate(intermediateAST, options) {
const generateResult = {};
const coreTargetOutput = this.generateCore(intermediateAST, options);
generateResult.core = coreTargetOutput;
if (intermediateAST.setup) {
const setupTargetOutput = this.generateSetup(intermediateAST, options);
generateResult.setup = setupTargetOutput;
}
return generateResult;
}
generateCore(params, options) {
const modelToTargetASTTransformer = new index_js_1.IntermediateModelToASTTargetTransformer();
const transformedIntermediateAST = modelToTargetASTTransformer.transform(params);
const bitloopsTargetGenerator = targetCoreCreator_js_1.TargetCoreGeneratorCreator.create(options.targetLanguage);
const targetContent = bitloopsTargetGenerator.ASTToTarget(transformedIntermediateAST);
const targetContentWithImports = bitloopsTargetGenerator.generateImports(targetContent);
const formattedTargetContent = bitloopsTargetGenerator.formatCode(targetContentWithImports, options.formatterConfig);
return formattedTargetContent;
}
generateSetup(params, options) {
const setupTargetGenerator = targetSetupCreator_js_1.TargetSetupGeneratorCreator.create(options.targetLanguage);
return setupTargetGenerator.generateSetupFiles(params, options);
}
getTargetFileDestination(boundedContext, moduleName, classType, className, targetLanguage = supportedLanguages_js_1.SupportedLanguages.TypeScript) {
return (0, getTargetFileDestination_js_1.getTargetFileDestination)(boundedContext, moduleName, classType, className, targetLanguage);
}
}
exports.TargetGenerator = TargetGenerator;
//# sourceMappingURL=index.js.map