markdown-maker 1.7.11 → 1.9.2

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.
package/build/cltool.d.ts DELETED
@@ -1 +0,0 @@
1
- export declare const argParser: any;
package/build/cltool.js DELETED
@@ -1,141 +0,0 @@
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
- Colors.enable();
12
- var ArgumentParser = require("argparse").ArgumentParser; /* for parsing clargs */
13
- var version = require("../package.json").version; /* package version number */
14
- var choki = require("chokidar");
15
- exports.argParser = new ArgumentParser({
16
- description: "Markdown bundler, with extra options",
17
- prog: process.argv[0].split(path.sep).pop(),
18
- });
19
- var configFileName = ".mdmconfig.json";
20
- //#region command line args
21
- exports.argParser.add_argument("src", {
22
- help: "file to be parsed. If this is a directory, it looks for entry point in the directory, see --entry",
23
- });
24
- exports.argParser.add_argument("--version", { action: "version", version: version });
25
- exports.argParser.add_argument("-v", "--verbose", {
26
- action: "store_true",
27
- help: "enable verbose output",
28
- });
29
- exports.argParser.add_argument("-db", "--debug", {
30
- action: "store_true",
31
- help: "enable debugging information",
32
- });
33
- exports.argParser.add_argument("-o", "--output", {
34
- help: "destination of bundle, by default is 'dist/bundle.md'",
35
- default: "dist/bundle.md",
36
- });
37
- exports.argParser.add_argument("-d", "--max-depth", {
38
- help: "maximum recursion depth, by default is 15",
39
- default: 15,
40
- type: "int",
41
- });
42
- exports.argParser.add_argument("-e", "--entry", {
43
- help: "assign entry point in directory, by default is 'main.md'",
44
- default: "main.md",
45
- });
46
- exports.argParser.add_argument("-w", "--watch", {
47
- action: "store_true",
48
- help: "recompile after a change in target target file or directory.",
49
- });
50
- exports.argParser.add_argument("-uu", "--use-underscore", {
51
- action: "store_true",
52
- 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.",
53
- });
54
- exports.argParser.add_argument("--toc-level", {
55
- help: "the section level of the table of contents, by default is 3",
56
- default: 3,
57
- type: "int",
58
- });
59
- exports.argParser.add_argument("--html", {
60
- action: "store_true",
61
- help: "compile HTML from the parsed markdown",
62
- });
63
- exports.argParser.add_argument("--allow-undef", "-au", {
64
- action: "store_true",
65
- help: "allow undefined variables. Mostly useful for typing inline html tags, and other non-strictly markdown related uses",
66
- });
67
- //#endregion
68
- function main() {
69
- // var server: refreshServer | undefined;
70
- var clargs;
71
- if (fs.existsSync(configFileName)) {
72
- var data = JSON.parse(fs.readFileSync(configFileName)).opts;
73
- var args_1 = [];
74
- Object.entries(data).forEach(function (_a) {
75
- var key = _a[0], value = _a[1];
76
- if (key != "src")
77
- args_1.push("--" + key);
78
- if (typeof value != "boolean")
79
- args_1.push(value);
80
- });
81
- args_1.push(data.src);
82
- exports.argParser.parse_args(args_1);
83
- }
84
- else
85
- clargs = exports.argParser.parse_args();
86
- /* helper method for calling parser */
87
- var compile = function (source, output, cb) {
88
- /* load data from file, if it exists,
89
- * otherwise, interpret as string */
90
- var parser = new parse_1.default(source, clargs);
91
- parser.to(output, function (file) {
92
- console.log(("Compiled " + file).green);
93
- if (cb)
94
- cb();
95
- });
96
- return parser;
97
- };
98
- var internalCooldown = 1000;
99
- function watcher(event, path) {
100
- var now = Date.now();
101
- if (!this.time)
102
- this.time = now;
103
- if (now - this.time < internalCooldown)
104
- return;
105
- console.log(path);
106
- console.log("Detected change in " + path + "...");
107
- try {
108
- compile(clargs.src, clargs.output, function () {
109
- // if (server.refresh) server.refresh();
110
- });
111
- }
112
- catch (e) {
113
- console.log(e.message);
114
- }
115
- this.time = now;
116
- }
117
- /* in case source is a directory, look for entry in directory */
118
- if (fs.existsSync(clargs.src) && fs.lstatSync(clargs.src).isDirectory()) {
119
- clargs.src = path.join(clargs.src, clargs.entry);
120
- }
121
- var srcDirName = path.dirname(clargs.src);
122
- if (clargs.debug)
123
- console.dir(clargs);
124
- if (!clargs.watch)
125
- compile(clargs.src, clargs.output);
126
- if (clargs.watch) {
127
- /* watch the folder of entry */
128
- // server = wsServer();
129
- console.log(("Watching " + srcDirName + " for changes...").yellow);
130
- var _watcher = choki.watch(srcDirName).on("all", watcher);
131
- try {
132
- compile(clargs.src, clargs.output);
133
- }
134
- catch (e) {
135
- console.log(e.message);
136
- }
137
- }
138
- }
139
- /* main entrypoint */
140
- if (require.main === module)
141
- main();
@@ -1,9 +0,0 @@
1
- import Parser from "./parse";
2
- export declare class Command {
3
- type: number;
4
- validator: (token: string, parser: Parser) => boolean | RegExpMatchArray;
5
- acter: (token: string, parser: Parser) => string | void;
6
- constructor(type: any, validator: (token: string, parser: Parser) => boolean | RegExpMatchArray, acter: (token: string, parser: Parser) => string | void);
7
- valid(token: any, parser: any): boolean | RegExpMatchArray;
8
- act(token: any, parser: any): string | void;
9
- }
package/build/commands.js DELETED
@@ -1,140 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.Command = void 0;
26
- var path = __importStar(require("path"));
27
- var parse_1 = __importDefault(require("./parse"));
28
- var commands = {
29
- preparse: [],
30
- parse: [],
31
- postparse: [],
32
- };
33
- var CommandType = {
34
- PREPARSE: 0,
35
- PARSE: 1,
36
- POSTPARSE: 2,
37
- };
38
- var TargetType;
39
- (function (TargetType) {
40
- TargetType[TargetType["HTML"] = 0] = "HTML";
41
- TargetType[TargetType["MARKDOWN"] = 1] = "MARKDOWN";
42
- })(TargetType || (TargetType = {}));
43
- var Command = /** @class */ (function () {
44
- function Command(type, validator, acter) {
45
- this.type = type;
46
- this.validator = validator;
47
- this.acter = acter;
48
- /* add this function to appropriate file */
49
- switch (type) {
50
- case CommandType.PARSE:
51
- commands.parse.push(this);
52
- break;
53
- case CommandType.PREPARSE:
54
- commands.preparse.push(this);
55
- break;
56
- case CommandType.POSTPARSE:
57
- commands.postparse.push(this);
58
- break;
59
- }
60
- }
61
- Command.prototype.valid = function (token, parser) {
62
- return this.validator(token, parser);
63
- };
64
- Command.prototype.act = function (token, parser) {
65
- return this.acter(token, parser);
66
- };
67
- return Command;
68
- }());
69
- exports.Command = Command;
70
- /* variable shorthand */
71
- new Command(CommandType.PREPARSE, function (t, p) { return t.match(/(?:\s|^)<\w+>/); }, function (t, p) { return "#mdvar" + t; });
72
- /* mddef */
73
- new Command(CommandType.PARSE, function (t, p) { return t.match(/^#mddef<(\w+)=(\w+)>/); }, function (t, p) {
74
- var m = t.match(/^#mddef<(\w+)=(\w+)>/);
75
- p.opts.defs[m[1]] = m[2];
76
- });
77
- /* mdvar */
78
- new Command(CommandType.PARSE, function (t, p) { return t.match(/^#mdvar<(\w+)>/) || t.match(/^<(\w+)>/); }, function (t, p) {
79
- var match = t.match(/#mdvar<(\w+)>/);
80
- var value = p.opts.defs[match[1]];
81
- if (!value && !p.opts.allow_undef)
82
- throw new Error("Undefined variable: " + match[1]);
83
- value = value || "<" + match[1] + ">";
84
- return t.replace(match[0], value.replace("_", " "));
85
- });
86
- /** mdinclude */
87
- new Command(CommandType.PARSE, function (t, p) { return t.match(/^#mdinclude<([\w.\/-]+)(?:[,\s]+([\w]+))?>/); }, function (t, p) {
88
- /* increase the current recursive depth */
89
- p.opts.depth++;
90
- if (p.opts.depth > p.opts.max_depth) {
91
- throw new Error("max depth exceeded!");
92
- }
93
- /* get the matching group */
94
- var match = t.match(/^#mdinclude<([\w.\/-]+)(?:[,\s]+([\w]+))?>/);
95
- var _ = match[0], name = match[1], condition = match[2];
96
- /* implement conditional imports */
97
- if (condition && !p.opts.args.includes(condition))
98
- return;
99
- var recursiveParser = new parse_1.default(path.join(p.wd, name), p.opts, {
100
- parent: p,
101
- });
102
- /* keep the options the same */
103
- recursiveParser.opts = p.opts;
104
- recursiveParser.parent = p;
105
- var fileType = path.extname(recursiveParser.file);
106
- var blob = fileType === ".md"
107
- ? recursiveParser.get(p.opts.targetType)
108
- : recursiveParser.raw;
109
- p.opts.depth--;
110
- return blob;
111
- });
112
- new Command(CommandType.PREPARSE, function (t, p) { return t.match(/#mdlabel<(\d+),([\w\W]+)>/); }, function (t, p) {
113
- if (p.opts.targetType !== TargetType.HTML)
114
- return;
115
- var match = t.match(/#mdlabel<([\d]+),([\w\W]+)>/);
116
- var level = Number.parseInt(match[1]);
117
- var title = match[2];
118
- var link = p.titleId(title);
119
- p.opts.secs.push({ level: level, title: title });
120
- return "<span id=\"" + link + "\"></span>";
121
- });
122
- /* mdref */
123
- new Command(CommandType.PARSE, function (t, p) { return t.match(/#mdref<([\w\W]+)>/); }, function (t, p) {
124
- var match = t.match(/#mdref<([\w\W]+)>/);
125
- for (var i = 0; i < p.opts.secs.length; i++) {
126
- var title = p.opts.secs[i].title;
127
- if (title === match[1])
128
- break;
129
- if (i === p.opts.secs.length - 1)
130
- throw new Error("Reference to [" + match[1] + "] could not be resolved!");
131
- }
132
- match[1] = match[1].replace("_", " ");
133
- var link = p.titleId(match[1]);
134
- if (p.opts.targetType === TargetType.HTML)
135
- return "<a href=\"#" + link + "\">" + match[1] + "</a>";
136
- else if (p.opts.targetType === TargetType.MARKDOWN)
137
- return "[" + match[1] + "](#" + link + ")";
138
- });
139
- new Command(CommandType.POSTPARSE, function (t, p) { return t.match(/#mdmaketoc/); }, function (t, p) { return p.gen_toc(); });
140
- module.exports = commands;
package/build/parse.d.ts DELETED
@@ -1,57 +0,0 @@
1
- declare enum TargetType {
2
- HTML = 0,
3
- MARKDOWN = 1
4
- }
5
- declare class Parser {
6
- file: string;
7
- parent?: Parser;
8
- line_num: number;
9
- wd: string;
10
- blobs: {
11
- [key: number]: string | undefined;
12
- };
13
- opts: {
14
- defs: {
15
- [key: string]: string;
16
- };
17
- secs: {
18
- level: number;
19
- title: string;
20
- }[];
21
- args: string[];
22
- depth: number;
23
- verbose: boolean;
24
- debug: boolean;
25
- max_depth: number;
26
- use_underscore: boolean;
27
- toc_level: number;
28
- allow_undef: boolean;
29
- html: boolean;
30
- targetType: TargetType | undefined;
31
- only_warn: boolean;
32
- parent?: Parser;
33
- isFileCallback: (s: string) => false | string;
34
- };
35
- raw: string;
36
- static TOKEN: string;
37
- constructor(filename: any, clargs: any, opts?: {
38
- parent?: Parser;
39
- isFileCallback?: (s: string) => false | string;
40
- });
41
- /**
42
- * parse wrapper for handling
43
- * preprocessing, parsing and postprocess
44
- **/
45
- parse(): any;
46
- mainparse(blob: any): string;
47
- parseToken(token: any): any;
48
- preprocess(blob: any): string;
49
- postprocess(blob: any): string;
50
- titleId(title: string): string;
51
- gen_toc(): string;
52
- remove_double_blank_lines(blob: any): any;
53
- to(bundleName: any, cb: any): void;
54
- html(): any;
55
- get(targetType: TargetType, callback?: any): any;
56
- }
57
- export default Parser;
package/build/parse.js DELETED
@@ -1,298 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var fs = require("fs"); /* for handling reading of files */
4
- var path = require("path"); /* for handling file paths */
5
- var Colors = require("colors.ts"); /* for adding colours to strings */
6
- Colors.enable();
7
- var marked = require("marked");
8
- var commands = require("./commands.js");
9
- var TargetType;
10
- (function (TargetType) {
11
- TargetType[TargetType["HTML"] = 0] = "HTML";
12
- TargetType[TargetType["MARKDOWN"] = 1] = "MARKDOWN";
13
- })(TargetType || (TargetType = {}));
14
- /* parse some md
15
- * recursively with extra options */
16
- var Parser = /** @class */ (function () {
17
- function Parser(filename, clargs, opts) {
18
- /* this.working_directory */
19
- this.file = filename;
20
- if (!opts)
21
- opts = {};
22
- /* the parent parser */
23
- this.parent = opts.parent;
24
- this.line_num = 0;
25
- this.wd = path.dirname(filename);
26
- /* finished blob */
27
- this.blobs = {};
28
- /* all options */
29
- this.opts = {
30
- defs: {},
31
- secs: [],
32
- args: [],
33
- depth: 0,
34
- verbose: false,
35
- debug: false,
36
- max_depth: 5,
37
- use_underscore: false,
38
- toc_level: 3,
39
- allow_undef: false,
40
- html: false,
41
- targetType: undefined,
42
- only_warn: false,
43
- parent: undefined,
44
- isFileCallback: function (f) {
45
- if (!fs.existsSync(f))
46
- return false;
47
- return fs.readFileSync(f, "utf-8") + "\n";
48
- },
49
- };
50
- if (!clargs) {
51
- clargs = {};
52
- }
53
- /* append all commandline arguments to this */
54
- Object.assign(this.opts, clargs);
55
- Object.assign(this.opts, opts);
56
- this.raw = this.opts.isFileCallback(filename) || filename;
57
- }
58
- /**
59
- * parse wrapper for handling
60
- * preprocessing, parsing and postprocess
61
- **/
62
- Parser.prototype.parse = function () {
63
- if (this.opts.verbose || this.opts.debug) {
64
- console.log(Colors.colors("magenta", "parsing " + this.file + ": depth=" + this.opts.depth));
65
- }
66
- if (this.opts.debug) {
67
- console.log("Parsing options:");
68
- console.log(this.opts);
69
- }
70
- /* reset sections for beginning parse */
71
- if (this.opts.depth === 0)
72
- this.opts.secs = [];
73
- var __blob;
74
- /* apply preproccessing to raw file */
75
- __blob = this.preprocess(this.raw);
76
- /* main parser instance call */
77
- __blob = this.mainparse(__blob);
78
- /**
79
- * apply postprocessing after */
80
- __blob = this.postprocess(__blob);
81
- return __blob;
82
- };
83
- Parser.prototype.mainparse = function (blob) {
84
- var _this = this;
85
- if (this.opts.verbose || this.opts.debug) {
86
- console.debug(("beginning mainparse of '" + this.file + "'").blue);
87
- }
88
- var __blob = "";
89
- /* main parser instance loop */
90
- blob.split("\n").forEach(function (line, lnum) {
91
- _this.line_num = lnum;
92
- /* if line looks like a title */
93
- var titleMatch = line.trim().match(/^(#+) (.+)$/);
94
- if (titleMatch) {
95
- if (_this.opts.verbose || _this.opts.debug)
96
- console.log("found toc element: " + line);
97
- /* implement toc level */
98
- var level = titleMatch[1].length;
99
- /**
100
- * parse elements of title
101
- * such as variables */
102
- var title = titleMatch[2]
103
- .trim()
104
- .split(" ")
105
- .map(function (s) {
106
- return s.startsWith(Parser.TOKEN) ? _this.parseToken(s) : s;
107
- })
108
- .join("_");
109
- _this.opts.secs.push({ level: level, title: title });
110
- if (_this.opts.debug) {
111
- console.log("updated sections:", { level: level, title: title });
112
- }
113
- }
114
- var __line_tokens = [];
115
- /* split line into tokens */
116
- line.split(" ").forEach(function (token) {
117
- /* if token is not #md token,
118
- * just add it and continue */
119
- if (token.startsWith(Parser.TOKEN)) {
120
- token = _this.parseToken(token);
121
- }
122
- __line_tokens.push(token);
123
- });
124
- /* put line back properly */
125
- __blob += __line_tokens.join(" ") + "\n";
126
- });
127
- return __blob;
128
- };
129
- Parser.prototype.parseToken = function (token) {
130
- /* iterate over all commands,
131
- * and if command is valid, execute it */
132
- if (this.opts.verbose || this.opts.debug)
133
- console.log("found mdtoken: " + token);
134
- for (var i = 0; i < commands.parse.length; i++) {
135
- var command = commands.parse[i];
136
- if (command.valid(token, this)) {
137
- return command.act(token, this);
138
- }
139
- }
140
- /* check if the command is for later */
141
- for (var i = 0; i < commands.postparse.length; i++) {
142
- var command = commands.postparse[i];
143
- if (command.valid(token, this)) {
144
- return token;
145
- }
146
- }
147
- throw new SyntaxError("Unknown token: " + token);
148
- };
149
- Parser.prototype.preprocess = function (blob) {
150
- var _this = this;
151
- if (this.opts.verbose || this.opts.debug) {
152
- console.debug(("beginning preprocess of '" + this.file + "'").blue);
153
- }
154
- var __blob = "";
155
- var lines = blob.split("\n");
156
- lines.forEach(function (line) {
157
- var __line_tokens = [];
158
- line.split(" ").forEach(function (token) {
159
- for (var _i = 0, _a = commands.preparse; _i < _a.length; _i++) {
160
- var command = _a[_i];
161
- if (command.valid(token, _this)) {
162
- token = command.act(token, _this);
163
- }
164
- }
165
- __line_tokens.push(token);
166
- });
167
- __blob += __line_tokens.join(" ") + "\n";
168
- });
169
- return __blob;
170
- };
171
- Parser.prototype.postprocess = function (blob) {
172
- var _this = this;
173
- if (this.opts.verbose || this.opts.debug) {
174
- console.debug(("beginning postprocess of '" + this.file + "'").blue);
175
- }
176
- var __blob = "";
177
- var lines = blob.split("\n");
178
- lines.forEach(function (line) {
179
- var __line_tokens = [];
180
- line.split(" ").forEach(function (token) {
181
- // only look
182
- for (var _i = 0, _a = commands.postparse; _i < _a.length; _i++) {
183
- var command = _a[_i];
184
- if (command.valid(token, _this)) {
185
- token = command.act(token, _this);
186
- }
187
- }
188
- __line_tokens.push(token);
189
- });
190
- __blob += __line_tokens.join(" ") + "\n";
191
- });
192
- /* remove double empty lines */
193
- __blob = this.remove_double_blank_lines(__blob);
194
- return __blob;
195
- };
196
- Parser.prototype.titleId = function (title) {
197
- var sep = this.opts.use_underscore ? "_" : "-";
198
- title = title
199
- .toLowerCase()
200
- .replace(/[^\w\s]+/g, "")
201
- .replace(/[\s_]+/g, sep);
202
- return title;
203
- };
204
- Parser.prototype.gen_toc = function () {
205
- var _this = this;
206
- var __blob = [];
207
- var tabSize = 2;
208
- var beg = "* ";
209
- var hor = " ".repeat(tabSize);
210
- this.opts.secs.forEach(function (sec) {
211
- if (sec.level > _this.opts.toc_level)
212
- return;
213
- var link = _this.titleId(sec.title);
214
- var title = sec.title.replace(/_/g, " ");
215
- var __line = hor.repeat(Math.max(sec.level - 1, 0)) +
216
- beg +
217
- ("[" + title + "](#" + link + ")");
218
- __blob.push(__line);
219
- });
220
- return __blob.join("\n");
221
- };
222
- Parser.prototype.remove_double_blank_lines = function (blob) {
223
- /* replace all triple newlines, and EOF by double newline */
224
- blob = blob.replace(/(\r\n|\n){3,}/g, "\n\n");
225
- return blob;
226
- };
227
- /* output the parsed document to bundle */
228
- Parser.prototype.to = function (bundleName, cb) {
229
- var dir = path.dirname(bundleName);
230
- var called = false;
231
- if (!cb)
232
- cb = function () { };
233
- if (!fs.existsSync(dir)) {
234
- fs.mkdirSync(dir);
235
- }
236
- this.get(TargetType.MARKDOWN, function (blob) {
237
- fs.writeFile(bundleName, blob, function () {
238
- if (!called)
239
- cb(bundleName);
240
- called = true;
241
- });
242
- });
243
- if (this.opts.html) {
244
- var htmlFileName_1 = bundleName.replace(".md", ".html");
245
- fs.writeFile(htmlFileName_1, this.html(), function () {
246
- if (!called)
247
- cb(htmlFileName_1);
248
- called = true;
249
- });
250
- }
251
- };
252
- Parser.prototype.html = function () {
253
- var htmlFormatted = marked(this.get(TargetType.HTML));
254
- return htmlFormatted;
255
- };
256
- Parser.prototype.get = function (targetType, callback) {
257
- /* If target type is undefined, markdown is the default */
258
- if (targetType == undefined)
259
- targetType = TargetType.MARKDOWN;
260
- if (this.blobs[targetType]) {
261
- if (callback) {
262
- callback(this.blobs[targetType]);
263
- }
264
- return this.blobs[targetType];
265
- }
266
- else {
267
- try {
268
- this.opts.targetType = targetType;
269
- var blob = this.parse();
270
- this.opts.targetType = undefined;
271
- if (callback)
272
- callback(blob);
273
- return blob;
274
- }
275
- catch (error) {
276
- var traceback = "";
277
- var p = this;
278
- do {
279
- traceback += ("\n...on line " + (p.line_num + 1) + " in " + p.file).grey(15);
280
- if (p.parent)
281
- p = p.parent;
282
- } while (p.parent);
283
- error.message += traceback;
284
- /* only interested in stacktrace, when debugging */
285
- if (!this.opts.debug)
286
- error.stack = "";
287
- if (this.opts.only_warn)
288
- console.error(error);
289
- else
290
- throw error;
291
- }
292
- }
293
- };
294
- Parser.TOKEN = "#md";
295
- return Parser;
296
- }());
297
- module.exports = Parser;
298
- exports.default = Parser;