mirror of
https://github.com/overleaf/overleaf.git
synced 2024-09-16 02:52:31 -04:00
57 lines
1.7 KiB
JavaScript
57 lines
1.7 KiB
JavaScript
|
// Generated by CoffeeScript 1.10.0
|
||
|
define(function() {
|
||
|
var BiberLogParser, LINE_SPLITTER_REGEX, MESSAGE_LEVELS;
|
||
|
LINE_SPLITTER_REGEX = /^\[(\d+)].*>\s(INFO|WARN|ERROR)\s-\s(.*)$/;
|
||
|
MESSAGE_LEVELS = {
|
||
|
"INFO": "info",
|
||
|
"WARN": "warning",
|
||
|
"ERROR": "error"
|
||
|
};
|
||
|
BiberLogParser = function(text, options) {
|
||
|
if (typeof text !== 'string') {
|
||
|
throw new Error("BiberLogParser Error: text parameter must be a string");
|
||
|
}
|
||
|
this.text = text.replace(/(\r\n)|\r/g, '\n');
|
||
|
this.options = options;
|
||
|
this.lines = text.split('\n');
|
||
|
};
|
||
|
(function() {
|
||
|
return this.parse = function() {
|
||
|
var result;
|
||
|
result = {
|
||
|
all: [],
|
||
|
errors: [],
|
||
|
warnings: [],
|
||
|
files: [],
|
||
|
typesetting: []
|
||
|
};
|
||
|
this.lines.forEach(function(line) {
|
||
|
var fullLine, lineNumber, match, message, messageType, newEntry;
|
||
|
match = line.match(LINE_SPLITTER_REGEX);
|
||
|
if (match) {
|
||
|
fullLine = match[0], lineNumber = match[1], messageType = match[2], message = match[3];
|
||
|
newEntry = {
|
||
|
file: null,
|
||
|
level: MESSAGE_LEVELS[messageType] || "INFO",
|
||
|
message: message,
|
||
|
line: null,
|
||
|
raw: fullLine
|
||
|
};
|
||
|
result.all.push(newEntry);
|
||
|
switch (newEntry.level) {
|
||
|
case 'error':
|
||
|
return result.errors.push(newEntry);
|
||
|
case 'warning':
|
||
|
return result.warnings.push(newEntry);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
return result;
|
||
|
};
|
||
|
}).call(BiberLogParser.prototype);
|
||
|
BiberLogParser.parse = function(text, options) {
|
||
|
return new BiberLogParser(text, options).parse();
|
||
|
};
|
||
|
return BiberLogParser;
|
||
|
});
|