dokkie
Version:
Create good looking documentation from your Readme
86 lines • 3.62 kB
JavaScript
;
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