-
Notifications
You must be signed in to change notification settings - Fork 43
/
convert.js
38 lines (32 loc) · 1.03 KB
/
convert.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
"use strict";
var path = require("path");
module.exports = convert;
function convert (parser, content) {
return getParser(parser)(content);
}
// Cache loaded parsers
var _parsers = {};
function getParser (parser) {
if (!_parsers[parser]) {
// Try to load prez default implementations
try {
_parsers[parser] = require("./parsers/" + parser);
} catch (e1) {
if (e1.code === "MODULE_NOT_FOUND" && e1.message.indexOf("'" + parser + "'") !== -1) {
// No module: try to load user implementation
try {
_parsers[parser] = require(path.join(process.cwd(), parser));
} catch (e2) {
if (e2.code === "MODULE_NOT_FOUND") {
throw new Error("Cannot find parser '" + parser + "' (" + e2 + ")");
} else {
throw new Error("Error while loading user parser '" + parser + "' (" + e2 + ")");
}
}
} else {
throw new Error("Error while loading parser '" + parser + "' (" + e1 + ")");
}
}
}
return _parsers[parser];
}