mirror of
https://github.com/thedjinn/js303.git
synced 2025-08-18 00:08:15 +02:00
57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
var Emblem;
|
|
|
|
Emblem = require('./emblem');
|
|
|
|
Emblem.throwCompileError = function(line, msg) {
|
|
throw new Error("Emblem syntax error, line " + line + ": " + msg);
|
|
};
|
|
|
|
Emblem.registerPartial = function(handlebarsVariant, partialName, text) {
|
|
if (!text) {
|
|
text = partialName;
|
|
partialName = handlebarsVariant;
|
|
handlebarsVariant = Handlebars;
|
|
}
|
|
return handlebarsVariant.registerPartial(partialName, Emblem.compile(handlebarsVariant, text));
|
|
};
|
|
|
|
Emblem.parse = function(string) {
|
|
var e, line, lines, msg, processed;
|
|
try {
|
|
processed = Emblem.Preprocessor.processSync(string);
|
|
return Emblem.Parser.parse(processed);
|
|
} catch (_error) {
|
|
e = _error;
|
|
if (e instanceof Emblem.Parser.SyntaxError) {
|
|
lines = string.split("\n");
|
|
line = lines[e.line - 1];
|
|
msg = "" + e.message + "\n" + line + "\n";
|
|
msg += new Array(e.column).join("-");
|
|
msg += "^";
|
|
return Emblem.throwCompileError(e.line, msg);
|
|
} else {
|
|
throw e;
|
|
}
|
|
}
|
|
};
|
|
|
|
Emblem.precompile = function(handlebarsVariant, string, options) {
|
|
var ast;
|
|
if (options == null) {
|
|
options = {};
|
|
}
|
|
Emblem.handlebarsVariant = handlebarsVariant;
|
|
ast = Emblem.parse(string);
|
|
return handlebarsVariant.precompile(ast, options);
|
|
};
|
|
|
|
Emblem.compile = function(handlebarsVariant, string, options) {
|
|
var ast;
|
|
if (options == null) {
|
|
options = {};
|
|
}
|
|
Emblem.handlebarsVariant = handlebarsVariant;
|
|
ast = Emblem.parse(string);
|
|
return handlebarsVariant.compile(ast, options);
|
|
};
|