2015-01-14 20:12:11 +01:00

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);
};