mrkdown
Version:
Markdown files to HTML static site generator - angular.js app
275 lines (274 loc) • 11.8 kB
JavaScript
;
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;