statigen
Version:
A static site generator that supports html, ejs, and markdown source files
92 lines • 2.82 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.trim = exports.trimLeading = exports.run = exports.writeFiles = exports.options = exports.outDir = exports.sourceDir = exports.tempDir = void 0;
const fsExtra = require("fs-extra");
const path = require("path");
const StaticSiteGenerator_1 = require("./StaticSiteGenerator");
exports.tempDir = path.resolve(path.join(__dirname, '..', '.tmp'));
exports.sourceDir = path.join(exports.tempDir, 'src');
exports.outDir = path.join(exports.tempDir, 'dest');
exports.options = {};
beforeEach(() => {
for (const key in exports.options) {
delete exports.options[key];
}
exports.options.sourceDir = exports.sourceDir;
exports.options.outDir = exports.outDir;
fsExtra.emptydirSync(exports.tempDir);
});
afterEach(() => {
fsExtra.removeSync(exports.tempDir);
});
/**
* Write a set of files to sourceDir
*/
function writeFiles(files) {
for (const filePath in files) {
fsExtra.outputFileSync(path.join(exports.sourceDir, filePath), files[filePath]);
}
}
exports.writeFiles = writeFiles;
async function run(opts = exports.options) {
const generator = new StaticSiteGenerator_1.StaticSiteGenerator();
try {
await generator.run(opts);
}
catch (e) {
console.error(e);
}
return generator;
}
exports.run = run;
/**
* Trim leading whitespace for every line (to make test writing cleaner).
* Also removes empty lines for consistency
*/
function trimLeading(text) {
var _a;
if (!text) {
return text;
}
const lines = text.split(/\r?\n/);
let minIndent = Number.MAX_SAFE_INTEGER;
//skip leading empty lines
while (((_a = lines[0]) === null || _a === void 0 ? void 0 : _a.trim().length) === 0) {
lines.splice(0, 1);
}
for (let i = 0; i < lines.length; i++) {
const line = lines[i];
const trimmedLine = line.trimLeft();
//skip empty lines
if (trimmedLine.length === 0) {
lines.splice(i, 1);
i--;
continue;
}
const leadingSpaceCount = line.length - trimmedLine.length;
if (leadingSpaceCount < minIndent) {
minIndent = leadingSpaceCount;
}
}
//apply the trim to each line
for (let i = 0; i < lines.length; i++) {
lines[i] = lines[i].substring(minIndent);
}
return lines.join('\n');
}
exports.trimLeading = trimLeading;
/**
* Remove leading white space and remove excess indentation
*/
function trim(strings, ...args) {
let text = '';
for (let i = 0; i < strings.length; i++) {
text += strings[i];
if (args[i]) {
text += args[i];
}
}
return trimLeading(text);
}
exports.trim = trim;
//# sourceMappingURL=testHelpers.spec.js.map
;