feat: reorganize builder
This commit is contained in:
parent
ff7bb041ef
commit
362b7aa15e
18 changed files with 1094 additions and 310 deletions
78
lib/file/BlueprintFileWriter.js
Normal file
78
lib/file/BlueprintFileWriter.js
Normal file
|
@ -0,0 +1,78 @@
|
|||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
/**
|
||||
* Handles writing compiled Blueprint files to the file system.
|
||||
*/
|
||||
class BlueprintFileWriter {
|
||||
/**
|
||||
* Creates a new BlueprintFileWriter instance.
|
||||
* @param {Object} [options] - Options object
|
||||
* @param {boolean} [options.debug=false] - Enable debug logging
|
||||
*/
|
||||
constructor(options = {}) {
|
||||
this.options = {
|
||||
debug: false,
|
||||
...options,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes HTML content to a file.
|
||||
* @param {string} outputPath - Path to write the HTML file
|
||||
* @param {string} content - HTML content to write
|
||||
*/
|
||||
writeHtmlFile(outputPath, content) {
|
||||
if (this.options.debug) {
|
||||
console.log(`[DEBUG] Writing HTML file: ${outputPath}`);
|
||||
}
|
||||
this.ensureDirectoryExists(path.dirname(outputPath));
|
||||
fs.writeFileSync(outputPath, content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes CSS content to a file.
|
||||
* @param {string} outputPath - Path to write the CSS file
|
||||
* @param {string} content - CSS content to write
|
||||
*/
|
||||
writeCssFile(outputPath, content) {
|
||||
if (this.options.debug) {
|
||||
console.log(`[DEBUG] Writing CSS file: ${outputPath}`);
|
||||
}
|
||||
this.ensureDirectoryExists(path.dirname(outputPath));
|
||||
fs.writeFileSync(outputPath, content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes both HTML and CSS files for a Blueprint compilation result.
|
||||
* @param {string} outputDir - Directory to write the files to
|
||||
* @param {string} baseName - Base name for the files (without extension)
|
||||
* @param {string} html - HTML content to write
|
||||
* @param {string} css - CSS content to write
|
||||
*/
|
||||
writeCompiledFiles(outputDir, baseName, html, css) {
|
||||
if (this.options.debug) {
|
||||
console.log(`[DEBUG] Writing compiled files to: ${outputDir}/${baseName}`);
|
||||
}
|
||||
|
||||
this.ensureDirectoryExists(outputDir);
|
||||
|
||||
this.writeHtmlFile(path.join(outputDir, `${baseName}.html`), html);
|
||||
this.writeCssFile(path.join(outputDir, `${baseName}.css`), css);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensures that a directory exists, creating it if it does not.
|
||||
* @param {string} dir - Directory path
|
||||
*/
|
||||
ensureDirectoryExists(dir) {
|
||||
if (!fs.existsSync(dir)) {
|
||||
fs.mkdirSync(dir, { recursive: true });
|
||||
if (this.options.debug) {
|
||||
console.log(`[DEBUG] Created directory: ${dir}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = BlueprintFileWriter;
|
Loading…
Add table
Add a link
Reference in a new issue