UNPKG

statigen

Version:

A static site generator that supports html, ejs, and markdown source files

92 lines 2.82 kB
"use strict"; 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