longform-markdown-splitter
Version:
Splits and transforms markdown files from obsidian for usage in hugo.
195 lines (194 loc) • 7.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MD_Filesystem = void 0;
var fs = require("fs");
var path = require("path");
var fsextra = require("fs-extra");
var fm = require("front-matter");
var yaml_1 = require("yaml");
var MD_Filesystem = (function () {
function MD_Filesystem() {
}
MD_Filesystem.split_frontmatter_body = function (content) {
var fm_content = fm(content);
var file_content = {
frontmatter: fm_content.frontmatter,
frontmatter_attributes: fm_content.attributes,
body_array: fm_content.body.split("\n"),
index: 0
};
return file_content;
};
MD_Filesystem.merge_frontmatter_body = function (mdfc) {
mdfc.frontmatter = (0, yaml_1.stringify)(mdfc.frontmatter_attributes);
return ("---\n" + mdfc.frontmatter + "\n---\n\n" + mdfc.body_array.join("\n"));
};
MD_Filesystem.copy_file = function (source, target, simulate) {
if (simulate === void 0) { simulate = false; }
if (!simulate) {
if (MD_Filesystem.is_file_exist(source)) {
if (MD_Filesystem.is_file_exist(target)) {
if (MD_Filesystem.is_file_modified(source, target)) {
fsextra.copySync(source, target);
console.log("copy_file from ".concat(source, " to ").concat(target));
}
else {
console.log("copyjob: source file not modified '".concat(source, "'"));
}
}
else {
fsextra.copySync(source, target);
console.log("copy_file from ".concat(source, " to ").concat(target));
}
}
else {
console.log("copyjob: source file doesnt exist '".concat(source, "'"));
}
}
else {
console.log("copy_file (simulated) from ".concat(source, " to ").concat(target));
if (MD_Filesystem.is_file_exist(source)) {
console.log("source exist: ".concat(source, "."));
}
else {
console.log("source exist not: ".concat(source, "."));
}
if (MD_Filesystem.is_file_exist(target)) {
console.log("target exist: ".concat(target, "."));
}
else {
console.log("target exist not: ".concat(target, "."));
}
if (MD_Filesystem.is_file_modified(source, target)) {
console.log("source is modified: ".concat(target, "."));
}
else {
console.log("source not modified: ".concat(target, "."));
}
}
};
MD_Filesystem.isFolder = function (my_path) {
try {
var stat = fs.lstatSync(my_path);
return stat.isDirectory();
}
catch (e) {
return false;
}
};
MD_Filesystem.isFile = function (my_path) {
try {
var stat = fs.lstatSync(my_path);
return stat.isFile();
}
catch (e) {
return false;
}
};
MD_Filesystem.is_file_exist = function (my_path) {
if (fs.existsSync(my_path)) {
return true;
}
else {
return false;
}
};
MD_Filesystem.is_file_modified = function (file_source, file_target) {
var stats_source = fs.statSync(file_source);
var mtime_source = stats_source.mtime;
var ctime_source = stats_source.ctime;
var stats_target = fs.statSync(file_target);
var mtime_target = stats_target.mtime;
var ctime_target = stats_target.ctime;
console.log("File source: ".concat(file_source, ", target: ").concat(file_target));
console.log("File data last modified, source: ".concat(mtime_source, ", target: ").concat(mtime_target));
console.log("File data last created, source: ".concat(ctime_source, ", target: ").concat(ctime_target));
return mtime_source.getTime() !== ctime_source.getTime();
};
MD_Filesystem.get_filename_from = function (my_path_filename) {
return path.basename(my_path_filename);
};
MD_Filesystem.get_path_from = function (my_path_filename) {
return path.parse(my_path_filename).dir;
};
MD_Filesystem.concat_path_filename = function (my_path, my_filename) {
if (my_path.endsWith(path.sep)) {
return my_path + my_filename;
}
else {
return my_path + path.sep + my_filename;
}
};
MD_Filesystem.ensure_path = function (my_path, simulate) {
if (simulate === void 0) { simulate = false; }
if (!simulate) {
fsextra.ensureDirSync(my_path);
console.log("ensure_path exist: '".concat(my_path, "'"));
}
else {
var folder_arr = MD_Filesystem.get_path_parts(my_path);
console.log("ensure_path (simulated): '".concat(my_path, "'"));
console.log("ensure_path (simulated):", folder_arr);
var part = "";
for (var _i = 0, folder_arr_1 = folder_arr; _i < folder_arr_1.length; _i++) {
var folder = folder_arr_1[_i];
part = (part === "" ? "" : part + path.sep) + folder;
if (folder !== "") {
if (!fs.existsSync(part)) {
console.log("ensure_path (simulated): missing: '".concat(part, "'"));
}
else {
console.log("ensure_path (simulated): exists: '".concat(part, "'"));
}
}
}
}
};
MD_Filesystem.get_path_parts = function (my_path) {
return my_path.split(path.sep);
};
MD_Filesystem.get_path_depth = function (my_path) {
return MD_Filesystem.get_path_parts(my_path).length;
};
MD_Filesystem.get_files_list = function (dir, files) {
if (files === void 0) { files = []; }
var fileList = fs.readdirSync(dir, { withFileTypes: true });
for (var _i = 0, fileList_1 = fileList; _i < fileList_1.length; _i++) {
var file = fileList_1[_i];
var name_1 = "".concat(dir, "/").concat(file.name);
if (fs.statSync(name_1).isDirectory()) {
this.get_files_list(name_1, files);
}
else {
files.push(name_1);
}
}
return files;
};
MD_Filesystem.read_file = function (file) {
try {
var md_array = fs.readFileSync(file).toString();
}
catch (err) {
throw err;
}
return md_array;
};
MD_Filesystem.write_file = function (writePath, content) {
try {
console.log("Write File ".concat(writePath));
fs.writeFileSync(writePath, content, "utf8");
}
catch (error) {
console.log("An error has occurred, writing ".concat(writePath), error);
}
};
MD_Filesystem.read_file_json = function (file) {
return JSON.parse(fs.readFileSync(file, "utf8"));
};
MD_Filesystem.write_file_json = function (file, json_object) {
fs.writeFileSync(file, JSON.stringify(json_object));
};
return MD_Filesystem;
}());
exports.MD_Filesystem = MD_Filesystem;