UNPKG

mrkdown

Version:

Markdown files to HTML static site generator - angular.js app

275 lines (274 loc) 11.8 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getFolderPathForVariesOSType = exports.createLinkStructure = exports.generateSideLink = exports.removeIfAnyEmptyStringInArray = exports.createConfigFile = exports.showOption = exports.convertMd = exports.randomId = exports.reverseString = exports.removeExistingFolder = void 0; var fs_1 = __importDefault(require("fs")); var chalk_1 = __importDefault(require("chalk")); var path_1 = __importDefault(require("path")); var config_1 = require("./config"); var const_1 = require("./const"); var os = __importStar(require("os")); function removeExistingFolder(folderName) { if (!fs_1.default.existsSync(folderName)) { return; } var absPath = path_1.default.resolve(folderName); var allFiles = []; var fileLooper = function (x) { return null; }; fileLooper = function (pathName) { var pathState = fs_1.default.statSync(pathName); if (pathState.isDirectory()) { var allChildren = fs_1.default.readdirSync(pathName); allChildren.map(function (x) { return path_1.default.join(pathName, x); }).forEach(function (x) { return fileLooper(x); }); } else { allFiles.push(pathName); } }; fileLooper(absPath); if (allFiles.every(function (x) { return x.includes(folderName); })) { allFiles.forEach(function (x) { fs_1.default.unlinkSync(x); var logPathName = path_1.default.join(folderName, x.split(folderName)[1]); // console.log(chalk.green(`DELETED ${logPathName}`)) }); } else { console.log(allFiles); } console.log(""); } exports.removeExistingFolder = removeExistingFolder; function reverseString(value) { if (typeof value === 'string') return value.split("").reverse().join(""); else return ""; } exports.reverseString = reverseString; function randomId() { var text = "id-"; var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; for (var i = 0; i < 30; i++) text += possible.charAt(Math.floor(Math.random() * possible.length)); return text + (Math.round(Math.random() * 1000)).toString(); } exports.randomId = randomId; function convertMd(md) { var convertedValue = md; var convertInput = [{ id: /<br>/gi, value: '<br>\n \t' }, { id: /\n/gi, value: '\n \t' }, { id: /<p>/gi, value: '<p class="paragraph">' }, { id: /<strong>/gi, value: '<strong class="bold">' }, { id: /<\/p>/gi, value: '\n \t</p>' }, { id: /<ul>/gi, value: '<ul class="ul_class">' }, { id: /<table>/gi, value: '<table class="table table-hover">' }, /** for image replacement */ { id: /<img src="Image/gi, value: '<img src="./Image' }, { id: /<img src="..\/Image/gi, value: '<img src="./Image' }, { id: /<img src="..\/..\/Image/gi, value: '<img src="./Image' }, { id: /<img src="..\/..\/..\/Image/gi, value: '<img src="./Image' }, { id: /<img src="..\/..\/..\/..\/Image/gi, value: '<img src="./Image' }, { id: /<img src="..\/..\/..\/..\/..\/Image/gi, value: '<img src="./Image' }, { id: /<img src="..\/..\/..\/..\/..\/..\/Image/gi, value: '<img src="./Image' }, ]; for (var index = 0; index < convertInput.length; index++) { var element = convertInput[index]; var var2 = convertedValue.replace(element.id, element.value); convertedValue = var2; } return convertedValue; } exports.convertMd = convertMd; function showOption() { var value = "\n".concat(chalk_1.default.green("Usage"), "\n------\n").concat(("mrkdown <Command>"), "\n\n").concat(chalk_1.default.green("Available Option"), "\n----------------\nCommand Definition\n").concat(chalk_1.default.yellow("build"), " convert all markdown file to html file\n ").concat(chalk_1.default.gray("--use-hash=true"), " enable the # in the Angular.js app URL\n ").concat(chalk_1.default.gray("--prod"), " production build, minified all the files\n").concat(chalk_1.default.yellow("init"), " create a configuration file\n\n"); console.log(value); } exports.showOption = showOption; function createConfigFile() { var filePath = path_1.default.join(path_1.default.resolve(), const_1.CONFIG_FILE_NAME); if (!fs_1.default.existsSync(filePath)) { fs_1.default.writeFileSync(filePath, JSON.stringify(config_1.defaultConfig, null, 2)); // console.log(chalk.green(`CREATED ${filePath}`)) } else { // console.log(chalk.yellow(`Already ${CONFIG_FILE_NAME} exists\n`)) } } exports.createConfigFile = createConfigFile; function removeIfAnyEmptyStringInArray(ar) { if (Array.isArray(ar) && ar.length > 0) { return ar.filter(function (x) { if (x != null && x != undefined) { if ((x + '').trim() != "") return true; else return false; } else return false; }); } else return []; } exports.removeIfAnyEmptyStringInArray = removeIfAnyEmptyStringInArray; function generateSideLink(linkStructure) { var sideLink = ''; var genSideLink = function (lnkStr) { if (Object.keys(lnkStr).length > 0) { for (var _i = 0, _a = Object.keys(lnkStr); _i < _a.length; _i++) { var key = _a[_i]; var currentNode = lnkStr[key]; if (currentNode.values.length == 0) { var link = currentNode.link; link = link.replace(/\\/g, '/').toLowerCase(); link = link.replace(/(.md|.txt)/g, '.html'); link = link.replace(/-/g, '-'); link = link.replace(/\s/g, '-'); var templateUrl = currentNode.link; templateUrl = templateUrl.replace(/\\/g, '/'); templateUrl = templateUrl.replace(/(.md|.txt|.htm|.html)/g, '.html'); var hashValue = config_1.defaultConfig.useHash ? '#!' : ''; sideLink += "<li> <a ng-click=\"changeSideHeader('".concat(currentNode.id, "')\" id=\"").concat(currentNode.id, "\" href=\"").concat(hashValue).concat(link, "\" title=\"").concat(key.split('.md').join('').trim(), "\">").concat(key.split('.md').join('').trim(), "</a> </li>"); } if (currentNode.values.length > 0) { var convertedKey = "id" + key.replace(/(\s|\.|\&)/g, "") + ("-" + currentNode.id).split(".").join(""); sideLink += " <li> <a data-target=\"#".concat(convertedKey, "\" data-toggle=\"collapse\" aria-expanded=\"false\" class=\"dropdown-toggle\" title=\"").concat(key, "\">").concat(key, "</a> \n <ul class=\"collapse list-unstyled\" id=\"").concat(convertedKey, "\">"); genSideLink(currentNode.next); } } sideLink += '</ul></li>'; } }; genSideLink(linkStructure); sideLink = sideLink.replace(/l1start/gi, '<li>'); sideLink = sideLink.replace(/l2end/gi, '</li>'); sideLink = sideLink.replace(/g1start/gi, '>'); sideLink = sideLink.replace(/g2end/gi, '</ul>'); return sideLink; } exports.generateSideLink = generateSideLink; function createLinkStructure(basicFileInfos) { var parentName = ''; var linkStructure = Object.assign({}); var convertFilesToLink = function (files, givenObj, parentFolder) { if (parentFolder === void 0) { parentFolder = ''; } Object.keys(givenObj).length != 0 ? (Object.keys(givenObj).forEach(function (x) { return parentName = givenObj[x]['parent']; })) : (parentName == ''); var splitAr = []; for (var _i = 0, files_1 = files; _i < files_1.length; _i++) { var iterator = files_1[_i]; splitAr = iterator.file.split(config_1.defaultConfig.separator); if (typeof givenObj[splitAr[0]] == "object" && Array.isArray(givenObj[splitAr[0]]['values'])) { var title = splitAr.shift() || ''; if (splitAr.join(config_1.defaultConfig.separator) != "") { givenObj[title]['values'].push({ id: iterator.id, file: splitAr.join(config_1.defaultConfig.separator) }); } } else { var title = splitAr.shift() || ''; givenObj[title] = Object.assign({}); givenObj[title]['values'] = []; givenObj[title]['parent'] = (parentName == '' ? '' : parentName + config_1.defaultConfig.separator) + parentFolder; givenObj[title]['id'] = iterator.id; givenObj[title]['link'] = parentFolder + (parentFolder == '' ? '' : config_1.defaultConfig.separator) + iterator.file; if (splitAr.length != 0 && splitAr[0] !== "") givenObj[title]['values'].push({ id: iterator.id, file: splitAr.join(config_1.defaultConfig.separator) }); } } if (Object.keys(givenObj).length > 0) { Object.keys(givenObj).forEach(function (keyValue) { if (givenObj[keyValue]['values'].length > 0) { givenObj[keyValue]['next'] = {}; var parentId = (givenObj[keyValue]['parent'] == '' ? '' : givenObj[keyValue]['parent'] + config_1.defaultConfig.separator) + keyValue; convertFilesToLink(givenObj[keyValue]['values'], givenObj[keyValue]['next'], parentId); } }); } }; convertFilesToLink(basicFileInfos, linkStructure); return linkStructure; } exports.createLinkStructure = createLinkStructure; function getFolderPathForVariesOSType(fileName) { if (os.type() === "Darwin" || os.type() === "Linux") return "/" + fileName; else fileName; } exports.getFolderPathForVariesOSType = getFolderPathForVariesOSType;