markdown-maker 1.9.2 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,7 +12,7 @@ jobs:
12
12
 
13
13
  strategy:
14
14
  matrix:
15
- node-version: [12.x, 14.x, 15.x]
15
+ node-version: [16.x, 18.x, 20.x]
16
16
  # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
17
17
 
18
18
  steps:
@@ -0,0 +1 @@
1
+ export declare const argParser: any;
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.argParser = void 0;
7
+ var fs = require("fs"); /* for handling reading of files */
8
+ var path = require("path"); /* for handling file paths */
9
+ var Colors = require("colors.ts"); /* for adding colours to strings */
10
+ var parse_1 = __importDefault(require("./parse"));
11
+ var ws_1 = require("ws");
12
+ Colors.enable();
13
+ var ArgumentParser = require("argparse").ArgumentParser; /* for parsing clargs */
14
+ var version = require("../package.json").version; /* package version number */
15
+ var choki = require("chokidar");
16
+ exports.argParser = new ArgumentParser({
17
+ description: "Markdown bundler, with extra options. Extension file is loaded from ./extensions.js, if it exists",
18
+ prog: "mdparse",
19
+ });
20
+ var configFileName = ".mdmconfig.json";
21
+ //#region command line args
22
+ exports.argParser.add_argument("src", {
23
+ help: "file to be parsed. If this is a directory, it looks for entry point in the directory, see --entry",
24
+ });
25
+ exports.argParser.add_argument("--version", { action: "version", version: version });
26
+ exports.argParser.add_argument("-v", "--verbose", {
27
+ action: "store_true",
28
+ help: "enable verbose output",
29
+ });
30
+ exports.argParser.add_argument("-D", "--debug", {
31
+ action: "store_true",
32
+ help: "enable debugging information",
33
+ });
34
+ exports.argParser.add_argument("-o", "--output", {
35
+ help: "destination of bundle, by default is 'dist/bundle.md'",
36
+ default: "dist/bundle.md",
37
+ });
38
+ exports.argParser.add_argument("-d", "--max-depth", {
39
+ help: "maximum recursion depth, by default is 15",
40
+ default: 15,
41
+ type: "int",
42
+ });
43
+ exports.argParser.add_argument("-e", "--entry", {
44
+ help: "assign entry point in directory, by default is 'main.md'",
45
+ default: "main.md",
46
+ });
47
+ exports.argParser.add_argument("-w", "--watch", {
48
+ action: "store_true",
49
+ help: "recompile after a change in target target file or directory.",
50
+ });
51
+ exports.argParser.add_argument("-u", "--use-underscore", {
52
+ action: "store_true",
53
+ help: "set the parser to use '_' as seperator in ids for Table of Content. If the links in the table does not work, this is likely to be the issue.",
54
+ });
55
+ exports.argParser.add_argument("-t", "--toc-level", {
56
+ help: "the section level of the table of contents, by default is 3",
57
+ default: 3,
58
+ type: "int",
59
+ });
60
+ exports.argParser.add_argument("-H", "--html", {
61
+ action: "store_true",
62
+ help: "compile HTML from the parsed markdown",
63
+ });
64
+ exports.argParser.add_argument("--allow-undefined", "-A", {
65
+ action: "store_true",
66
+ help: "allow the use of the \"<thing>\" syntax, without raising an error when 'thing' is not a variable. Mostly useful when writing inline html tags, and other non-strictly markdown related uses",
67
+ });
68
+ //#endregion
69
+ function main() {
70
+ var clargs, fileargs;
71
+ var server;
72
+ /* Read config file or parse args from cmd-line */
73
+ if (fs.existsSync(configFileName)) {
74
+ var data = JSON.parse(fs.readFileSync(configFileName)).opts;
75
+ var args_1 = [];
76
+ Object.entries(data).forEach(function (_a) {
77
+ var key = _a[0], value = _a[1];
78
+ if (key != "src" && value !== false) {
79
+ args_1.push("--" + key);
80
+ }
81
+ if (typeof value != "boolean") {
82
+ args_1.push(value);
83
+ }
84
+ });
85
+ /* We skip [0] and [1], as it is the binary and source file, even when compiled*/
86
+ for (var i = 2; i < process.argv.length; i++)
87
+ args_1.push(process.argv[i]);
88
+ clargs = exports.argParser.parse_args(args_1);
89
+ }
90
+ else {
91
+ clargs = exports.argParser.parse_args();
92
+ }
93
+ /* if src is init, create config file and exit */
94
+ if (clargs.src == "init") {
95
+ var template = fs.readFileSync(path.join(__dirname, "..", "src", "templates", "configTemplate.json"));
96
+ fs.writeFileSync(configFileName, template);
97
+ fs.writeFileSync("main.md", "# Main\n");
98
+ return;
99
+ }
100
+ /* helper method for calling parser */
101
+ var compile = function (source, output, cb) {
102
+ /* load data from file, if it exists,
103
+ * otherwise, interpret as string */
104
+ var parser = new parse_1.default(source, clargs);
105
+ parser.to(output, function (file) {
106
+ console.log("Compiled ".concat(file).green);
107
+ if (cb)
108
+ cb();
109
+ });
110
+ return parser;
111
+ };
112
+ var internalCooldown = 1000;
113
+ function watcher(event, path) {
114
+ var now = Date.now();
115
+ if (!this.time)
116
+ this.time = now;
117
+ if (now - this.time < internalCooldown)
118
+ return;
119
+ console.log(path);
120
+ console.log("Detected change in ".concat(path, "..."));
121
+ try {
122
+ compile(clargs.src, clargs.output, function () {
123
+ /* after compile, send refresh command to clients */
124
+ server.clients.forEach(function (client) {
125
+ if (client.OPEN)
126
+ client.send("refresh");
127
+ });
128
+ });
129
+ }
130
+ catch (e) {
131
+ console.log(e.message);
132
+ }
133
+ this.time = now;
134
+ }
135
+ /* in case source is a directory, look for entry in directory */
136
+ if (fs.existsSync(clargs.src) && fs.lstatSync(clargs.src).isDirectory()) {
137
+ clargs.src = path.join(clargs.src, clargs.entry);
138
+ }
139
+ if (clargs.debug)
140
+ console.dir(clargs);
141
+ /* compile once */
142
+ if (!clargs.watch)
143
+ compile(clargs.src, clargs.output);
144
+ /* watch the folder and recompile on change */
145
+ else {
146
+ var srcDirName = path.dirname(clargs.src);
147
+ console.log("Watching ".concat(srcDirName, " for changes...").yellow);
148
+ server = new ws_1.WebSocketServer({ port: 7788 });
149
+ var _watcher = choki.watch(srcDirName).on("all", watcher);
150
+ try {
151
+ compile(clargs.src, clargs.output);
152
+ }
153
+ catch (e) {
154
+ console.log(e.message);
155
+ }
156
+ }
157
+ }
158
+ /* main entrypoint */
159
+ if (require.main === module)
160
+ main();
161
+ //# sourceMappingURL=cltool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cltool.js","sourceRoot":"","sources":["../src/cltool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import Parser from "./parse";
2
+ export declare class MDMError extends Error {
3
+ match: RegExpMatchArray;
4
+ constructor(message: string, match: RegExpMatchArray);
5
+ }
6
+ export declare const commands: {
7
+ preparse: Command[];
8
+ parse: Command[];
9
+ postparse: Command[];
10
+ };
11
+ export declare enum CommandType {
12
+ PREPARSE = 0,
13
+ PARSE = 1,
14
+ POSTPARSE = 2
15
+ }
16
+ export declare enum TargetType {
17
+ HTML = 0,
18
+ MARKDOWN = 1
19
+ }
20
+ export declare class Command {
21
+ validator: RegExp;
22
+ acter: (match: RegExpMatchArray, parser: Parser) => string | void;
23
+ type: CommandType;
24
+ constructor(validator: RegExp, acter: (match: RegExpMatchArray, parser: Parser) => string | void, type: CommandType);
25
+ act(match: any, parser: any): string | void;
26
+ }
27
+ export declare function load_extensions(parser: Parser): void;
28
+ /**
29
+ *
30
+ * @param regex The regex to match the command
31
+ * @param acter The function called when a match is found. Takes two arguments, `match` and `parser`. `match` is the result of the regex match, and `parser` is the parser instance. The function should return the replacement string.
32
+ * @param type When the command should be run. Can be `CommandType.PREPARSE`, `CommandType.PARSE`, or `CommandType.POSTPARSE`. Defaults to `CommandType.PARSE`.
33
+ */
34
+ export declare function new_command(regex: RegExp, acter: (match: RegExpMatchArray, parser: Parser) => string, type?: CommandType): void;
35
+ declare const _default: {
36
+ commands: {
37
+ preparse: Command[];
38
+ parse: Command[];
39
+ postparse: Command[];
40
+ };
41
+ load_extensions: typeof load_extensions;
42
+ };
43
+ export default _default;
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
+ desc = { enumerable: true, get: function() { return m[k]; } };
22
+ }
23
+ Object.defineProperty(o, k2, desc);
24
+ }) : (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ o[k2] = m[k];
27
+ }));
28
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
30
+ }) : function(o, v) {
31
+ o["default"] = v;
32
+ });
33
+ var __importStar = (this && this.__importStar) || function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ var __importDefault = (this && this.__importDefault) || function (mod) {
41
+ return (mod && mod.__esModule) ? mod : { "default": mod };
42
+ };
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.new_command = exports.load_extensions = exports.Command = exports.TargetType = exports.CommandType = exports.commands = exports.MDMError = void 0;
45
+ var path = __importStar(require("path"));
46
+ var parse_1 = __importDefault(require("./parse"));
47
+ var fs = __importStar(require("fs"));
48
+ var templates_1 = __importStar(require("./templates"));
49
+ var require_runtime_1 = __importDefault(require("require-runtime"));
50
+ var MDMError = /** @class */ (function (_super) {
51
+ __extends(MDMError, _super);
52
+ function MDMError(message, match) {
53
+ var _this = _super.call(this, message) || this;
54
+ _this.name = "MDMError";
55
+ _this.match = match;
56
+ return _this;
57
+ }
58
+ return MDMError;
59
+ }(Error));
60
+ exports.MDMError = MDMError;
61
+ exports.commands = {
62
+ preparse: [],
63
+ parse: [],
64
+ postparse: [],
65
+ };
66
+ var CommandType;
67
+ (function (CommandType) {
68
+ CommandType[CommandType["PREPARSE"] = 0] = "PREPARSE";
69
+ CommandType[CommandType["PARSE"] = 1] = "PARSE";
70
+ CommandType[CommandType["POSTPARSE"] = 2] = "POSTPARSE";
71
+ })(CommandType = exports.CommandType || (exports.CommandType = {}));
72
+ var TargetType;
73
+ (function (TargetType) {
74
+ TargetType[TargetType["HTML"] = 0] = "HTML";
75
+ TargetType[TargetType["MARKDOWN"] = 1] = "MARKDOWN";
76
+ })(TargetType = exports.TargetType || (exports.TargetType = {}));
77
+ var Command = /** @class */ (function () {
78
+ function Command(validator, acter, type) {
79
+ this.type = type;
80
+ this.validator = validator;
81
+ this.acter = acter;
82
+ /* add this function to appropriate file */
83
+ switch (type) {
84
+ case CommandType.PARSE:
85
+ exports.commands.parse.push(this);
86
+ break;
87
+ case CommandType.PREPARSE:
88
+ exports.commands.preparse.push(this);
89
+ break;
90
+ case CommandType.POSTPARSE:
91
+ exports.commands.postparse.push(this);
92
+ break;
93
+ }
94
+ }
95
+ Command.prototype.act = function (match, parser) {
96
+ return this.acter(match, parser);
97
+ };
98
+ return Command;
99
+ }());
100
+ exports.Command = Command;
101
+ /* variable shorthand */
102
+ new Command(/(\s|^)<(.+)>/, function (match, parser) { return "".concat(match[1], "#mdvar<").concat(match[2], ">"); }, CommandType.PREPARSE);
103
+ /* mddef */
104
+ new Command(/#mddef< *(.+?) *= *(.+?) *>/ /* first .+ is lazy so as to not match following spaces */, function (match, parser) {
105
+ parser.opts.defs[match[1]] = match[2].replace("_", " ");
106
+ }, CommandType.PARSE);
107
+ /* mdvar */
108
+ new Command(/#mdvar<(.+?)>/, function (match, parser) {
109
+ var value = parser.opts.defs[match[1]];
110
+ if (!value && !parser.opts.allow_undefined)
111
+ throw new Error("Undefined variable: ".concat(match[1]));
112
+ return (value = value || "<".concat(match[1], ">"));
113
+ }, CommandType.PARSE);
114
+ /** mdinclude */
115
+ new Command(/#mdinclude<([\w.\/-]+)(?:[,\s]+([\w]+))?>/, function (match, parser) {
116
+ /* increase the current recursive depth */
117
+ parser.opts.depth++;
118
+ if (parser.opts.depth > parser.opts.max_depth) {
119
+ throw new Error("max depth exceeded!");
120
+ }
121
+ /* get the matching group */
122
+ var _ = match[0], name = match[1], condition = match[2];
123
+ /* implement conditional imports */
124
+ if (condition && !parser.opts.args.includes(condition))
125
+ return;
126
+ var fsstat = fs.lstatSync(path.join(parser.wd, name));
127
+ if (fsstat.isDirectory()) {
128
+ /* check if a file with the same name of the
129
+ * exists in the folder */
130
+ if (fs.existsSync(path.join(parser.wd, name, "".concat(name, ".md")))) {
131
+ name = path.join(name, "".concat(name, ".md"));
132
+ }
133
+ else {
134
+ throw new Error("No entry file found in folder \"".concat(name, "\". Looking for \"").concat(name, ".md\""));
135
+ }
136
+ }
137
+ var recursiveParser = new parse_1.default(path.join(parser.wd, name), parser.opts, {
138
+ parent: parser,
139
+ });
140
+ /* keep the options the same */
141
+ recursiveParser.opts = parser.opts;
142
+ recursiveParser.parent = parser;
143
+ var fileType = path.extname(recursiveParser.file);
144
+ var blob = fileType === ".md"
145
+ ? recursiveParser.get(parser.opts.targetType)
146
+ : recursiveParser.raw;
147
+ parser.opts.depth--;
148
+ return blob;
149
+ }, CommandType.PARSE);
150
+ /* mdlabel */
151
+ new Command(/#mdlabel<(\d+),\s?(.+)>/, function (match, parser) {
152
+ if (parser.opts.targetType !== TargetType.HTML)
153
+ return "";
154
+ var level = Number.parseInt(match[1]);
155
+ var title = match[2];
156
+ var link = parser.titleId(title);
157
+ parser.opts.secs.push({ level: level, title: title });
158
+ return "<span id=\"".concat(link, "\"></span>");
159
+ }, CommandType.PREPARSE);
160
+ /* mdref */
161
+ new Command(/#mdref<(.+)>/, function (match, parser) {
162
+ for (var i = 0; i < parser.opts.secs.length; i++) {
163
+ var title = parser.opts.secs[i].title;
164
+ if (title === match[1])
165
+ break;
166
+ if (i === parser.opts.secs.length - 1)
167
+ throw new Error("Reference to [".concat(match[1], "] could not be resolved!"));
168
+ }
169
+ match[1] = match[1].replace("_", " ");
170
+ var link = parser.titleId(match[1]);
171
+ if (parser.opts.targetType === TargetType.HTML)
172
+ return "<a href=\"#".concat(link, "\">").concat(match[1], "</a>");
173
+ else if (parser.opts.targetType === TargetType.MARKDOWN)
174
+ return "[".concat(match[1], "](#").concat(link, ")");
175
+ }, CommandType.PARSE);
176
+ /* mdtemplate */
177
+ new Command(/#mdtemplate<(\w+?)>/, function (match, parser) {
178
+ var template = match[1];
179
+ var replacement = templates_1.default[template];
180
+ if (replacement !== undefined) {
181
+ return replacement;
182
+ }
183
+ else {
184
+ throw new MDMError("Template \"".concat(template, "\" not found!"), match);
185
+ }
186
+ }, CommandType.PARSE);
187
+ new Command(/#mdmaketoc(?:<>)?/, function (match, parser) { return parser.gen_toc(); }, CommandType.POSTPARSE);
188
+ var loaded_extentions = [];
189
+ function load_extension(parser, file) {
190
+ if (loaded_extentions.includes(file))
191
+ return;
192
+ if (fs.existsSync(file)) {
193
+ var extensions = (0, require_runtime_1.default)(file);
194
+ loaded_extentions.push(file);
195
+ extensions.main(templates_1.new_template, new_command);
196
+ if (parser.opts.verbose)
197
+ console.log("Loaded extensions from ".concat(file).yellow);
198
+ }
199
+ else if (parser.opts.debug) {
200
+ console.log("No extensions found at ".concat(file).red);
201
+ }
202
+ }
203
+ function load_extensions(parser) {
204
+ /* global extention */
205
+ var global_extensions_path = path.join(__dirname, "extensions.js");
206
+ load_extension(parser, global_extensions_path);
207
+ /* project extention */
208
+ var project_extensions_path = path.join(parser.wd_full, "extensions.js");
209
+ load_extension(parser, project_extensions_path);
210
+ }
211
+ exports.load_extensions = load_extensions;
212
+ /**
213
+ *
214
+ * @param regex The regex to match the command
215
+ * @param acter The function called when a match is found. Takes two arguments, `match` and `parser`. `match` is the result of the regex match, and `parser` is the parser instance. The function should return the replacement string.
216
+ * @param type When the command should be run. Can be `CommandType.PREPARSE`, `CommandType.PARSE`, or `CommandType.POSTPARSE`. Defaults to `CommandType.PARSE`.
217
+ */
218
+ function new_command(regex, acter, type) {
219
+ new Command(regex, acter, type || CommandType.PARSE);
220
+ }
221
+ exports.new_command = new_command;
222
+ exports.default = { commands: exports.commands, load_extensions: load_extensions };
223
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { Command } from "./commands";
2
+ declare enum TargetType {
3
+ HTML = 0,
4
+ MARKDOWN = 1
5
+ }
6
+ declare class Parser {
7
+ file: string;
8
+ parent?: Parser;
9
+ line_num: number;
10
+ wd: string;
11
+ wd_full: string;
12
+ blobs: {
13
+ [key: number]: string | undefined;
14
+ };
15
+ opts: {
16
+ defs: {
17
+ [key: string]: string;
18
+ };
19
+ secs: {
20
+ level: number;
21
+ title: string;
22
+ }[];
23
+ args: string[];
24
+ depth: number;
25
+ verbose: boolean;
26
+ debug: boolean;
27
+ max_depth: number;
28
+ use_underscore: boolean;
29
+ toc_level: number;
30
+ allow_undefined: boolean;
31
+ html: boolean;
32
+ watch: boolean;
33
+ targetType: TargetType | undefined;
34
+ only_warn: boolean;
35
+ parent?: Parser;
36
+ isFileCallback: (s: string) => false | string;
37
+ };
38
+ raw: string;
39
+ static TOKEN: string;
40
+ constructor(filename: any, clargs: any, opts?: {
41
+ parent?: Parser;
42
+ isFileCallback?: (s: string) => false | string;
43
+ });
44
+ /**
45
+ * parse wrapper for handling
46
+ * preprocessing, parsing and postprocess
47
+ **/
48
+ parse(): any;
49
+ mainparse(blob: string): string;
50
+ preprocess(blob: string): string;
51
+ postprocess(blob: string): string;
52
+ parse_commands(blob: string, commands: Command[]): string;
53
+ parse_all_commands(blob: string, commands: {
54
+ [key: string]: Command[];
55
+ }): string;
56
+ titleId(title: string): string;
57
+ gen_toc(): string;
58
+ line_num_from_index(index: number): number;
59
+ remove_double_blank_lines(blob: any): any;
60
+ to(bundleName: string, callback: (fileName: string) => void): void;
61
+ html(): any;
62
+ get(targetType?: TargetType, callback?: (blob: string) => void): string;
63
+ }
64
+ export declare function splice(str: string, startIndex: number, width: number, newSubStr: string): string;
65
+ export default Parser;