UNPKG

longform-markdown-splitter

Version:

Splits and transforms markdown files from obsidian for usage in hugo.

107 lines (106 loc) 5.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MD_Exporter = exports.MD_EXPORTER_COMMANDS = void 0; var fs = require("fs"); var md_filesystem_1 = require("./md-filesystem"); var md_transformer_factory_1 = require("./md-transformer-factory"); var MD_EXPORTER_COMMANDS; (function (MD_EXPORTER_COMMANDS) { MD_EXPORTER_COMMANDS["DO_NOT_WRITE_FILES"] = "do-not-write-file"; })(MD_EXPORTER_COMMANDS || (exports.MD_EXPORTER_COMMANDS = MD_EXPORTER_COMMANDS = {})); var MD_Exporter = (function () { function MD_Exporter() { this.transformers = []; this.do_not_write_file = false; } MD_Exporter.prototype.addTransformer = function (t) { this.transformers.push(t); }; MD_Exporter.prototype.do_command = function (from, to, command) { if (command === MD_EXPORTER_COMMANDS.DO_NOT_WRITE_FILES) { this.do_not_write_file = true; } }; MD_Exporter.prototype.perform_job = function (job_parameter) { var _this = this; if (md_filesystem_1.MD_Filesystem.isFolder(job_parameter.readPath)) { var file_list = md_filesystem_1.MD_Filesystem.get_files_list(job_parameter.readPath); console.log(file_list); file_list.forEach(function (file) { _this.transform_and_write(file, job_parameter, md_filesystem_1.MD_Filesystem.read_file(file)); }); } else if (md_filesystem_1.MD_Filesystem.isFile(job_parameter.readPath)) { this.transform_and_write(job_parameter.readPath, job_parameter, md_filesystem_1.MD_Filesystem.read_file(job_parameter.readPath)); } else { console.log("not supported: '".concat(job_parameter.readPath, "'")); } }; MD_Exporter.prototype.transform_and_write = function (source_file, job_parameter, md_content) { var mdfc = md_filesystem_1.MD_Filesystem.split_frontmatter_body(md_content); for (var _i = 0, _a = this.transformers; _i < _a.length; _i++) { var transformer = _a[_i]; transformer.set_job_parameter(job_parameter); transformer.addObserver(this); for (var i = 0; i < mdfc.body_array.length; i++) { mdfc.index = i; var test = transformer.transform(mdfc, i); if (test.index != i) i = test.index; } } var filename = md_filesystem_1.MD_Filesystem.get_filename_from(source_file); var path_target_filename = md_filesystem_1.MD_Filesystem.concat_path_filename(job_parameter.writePath, filename); md_filesystem_1.MD_Filesystem.ensure_path(job_parameter.writePath, job_parameter.simulate); if (!job_parameter.simulate) { if (!this.do_not_write_file) { if (md_filesystem_1.MD_Filesystem.is_file_exist(path_target_filename)) { if (md_filesystem_1.MD_Filesystem.is_file_modified(source_file, path_target_filename)) { console.log("file does exist, and is modified (compared by modified-date): Write it."); md_filesystem_1.MD_Filesystem.write_file(path_target_filename, md_filesystem_1.MD_Filesystem.merge_frontmatter_body(mdfc)); } else { console.log("file does exist, but is not modified: Skip writing."); } } else { console.log("file does not exist: Write it."); md_filesystem_1.MD_Filesystem.write_file(path_target_filename, md_filesystem_1.MD_Filesystem.merge_frontmatter_body(mdfc)); } } } else { console.log("###########################"); console.log(source_file); console.log(path_target_filename); console.log("modified: ".concat(md_filesystem_1.MD_Filesystem.is_file_modified(source_file, path_target_filename))); console.log("###########################"); } }; MD_Exporter.prototype.perform_job_from = function (config_file, job_name) { var _this = this; var jsonData = JSON.parse(fs.readFileSync(config_file, "utf8")); var the_job = null; jsonData.job_list.forEach(function (job) { if (job.job_name === job_name) { the_job = job; } }); if (the_job != null) { console.log("prepare job '".concat(the_job.job_name, "'")); var job_parameter = the_job.job_parameter; var job_tasks = the_job.job_tasks; job_tasks.forEach(function (job_task) { var transformer = new md_transformer_factory_1.MD_Transformer_Factory(job_task.transformer_class_name, job_task.transformer_parameter); _this.addTransformer(transformer); }); this.perform_job(job_parameter); } else { console.log("job '".concat(the_job.job_name, "' not found in '").concat(config_file, "'")); } }; return MD_Exporter; }()); exports.MD_Exporter = MD_Exporter;