UNPKG

dokkie

Version:

Create good looking documentation from your Readme

86 lines 3.62 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Handlebars = exports.loadHandlebarsPartials = void 0; const handlebars_1 = __importDefault(require("handlebars")); const format_1 = __importDefault(require("date-fns/format")); const _1 = require("./"); const path_1 = require("path"); const { readFile, readdir } = require("fs").promises; const loadPartial = (partial) => __awaiter(void 0, void 0, void 0, function* () { const partialTemplate = path_1.join(__dirname, "../../", "template", `${partial}.hbs`); try { const fileData = yield readFile(partialTemplate).then((res) => res.toString()); return fileData; } catch (err) { throw new Error(`${partialTemplate} doesn't exist`); } }); // Create Partials exports.loadHandlebarsPartials = () => __awaiter(void 0, void 0, void 0, function* () { // Create Partials const partialFolders = ["partials", "sections"]; const partials = []; yield _1.asyncForEach(partialFolders, (folder) => __awaiter(void 0, void 0, void 0, function* () { const files = yield readdir(path_1.join(__dirname, "../../", "template", folder)); yield _1.asyncForEach(files, (file) => __awaiter(void 0, void 0, void 0, function* () { const partial = path_1.join(folder, path_1.basename(file, ".hbs")); try { partials.push({ name: partial.indexOf("/") > 0 ? partial.split("/")[partial.split("/").length - 1] : partial, file: yield loadPartial(partial).then((r) => r), }); } catch (err) { throw Error(err); } })); })); return partials; }); // Create Helpers const helpers = { eq: (v1, v2) => v1 === v2, ne: (v1, v2) => v1 !== v2, lt: (v1, v2) => v1 < v2, gt: (v1, v2) => v1 > v2, lte: (v1, v2) => v1 <= v2, gte: (v1, v2) => v1 >= v2, includes: (v1, v2) => v1.includes(v2), and() { return Array.prototype.every.call(arguments, Boolean); }, or() { return Array.prototype.slice.call(arguments, 0, -1).some(Boolean); }, ternary(cond, v1, v2) { return cond ? v1 : v2; }, // usage: {{dateFormat date format="MMMM YYYY"}} dateFormat(context, block) { const f = block.hash.format || "MMM Do, YYYY"; return format_1.default(new Date(context), f); }, join(context, block) { return context.join(block.hash.delimiter ? block.hash.delimited : ", "); }, }; Object.keys(helpers).forEach((helper) => { handlebars_1.default.registerHelper(helper, helpers[helper]); }); exports.Handlebars = handlebars_1.default; //# sourceMappingURL=handlebars.js.map