mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
Updated package warning parser
This commit is contained in:
parent
084b0d8548
commit
6f93362fdc
1 changed files with 25 additions and 21 deletions
|
@ -3,10 +3,11 @@ define(function() {
|
|||
var LOG_WRAP_LIMIT = 79;
|
||||
var LATEX_WARNING_REGEX = /^LaTeX Warning: (.*)$/;
|
||||
var HBOX_WARNING_REGEX = /^(Over|Under)full \\(v|h)box/;
|
||||
var BIBER_WARNING_REGEX = /^Package biblatex Warning: (.*)$/;
|
||||
var NATBIB_WARNING_REGEX = /^Package natbib Warning: (.*)$/;
|
||||
var PACKAGE_WARNING_REGEX = /^(Package \b.+\b Warning:.*)$/;
|
||||
// This is used to parse the line number from common latex warnings
|
||||
var LINES_REGEX = /lines? ([0-9]+)/;
|
||||
// This is used to parse the package name from the package warnings
|
||||
var PACKAGE_REGEX = /^Package (\b.+\b) Warning/;
|
||||
|
||||
var LogText = function(text) {
|
||||
this.text = text.replace(/(\r\n)|\r/g, "\n");
|
||||
|
@ -101,10 +102,8 @@ define(function() {
|
|||
this.parseSingleWarningLine(LATEX_WARNING_REGEX);
|
||||
} else if (this.currentLineIsHboxWarning()) {
|
||||
this.parseHboxLine();
|
||||
} else if (this.currentLineIsBiberWarning()) {
|
||||
this.parseBiberWarningLine();
|
||||
} else if (this.currentLineIsNatbibWarning()) {
|
||||
this.parseSingleWarningLine(NATBIB_WARNING_REGEX);
|
||||
} else if (this.currentLineIsPackageWarning()) {
|
||||
this.parseMultipleWarningLine();
|
||||
} else {
|
||||
this.parseParensForFilenames();
|
||||
}
|
||||
|
@ -140,12 +139,8 @@ define(function() {
|
|||
return !!(this.currentLine.match(LATEX_WARNING_REGEX));
|
||||
};
|
||||
|
||||
this.currentLineIsBiberWarning = function () {
|
||||
return !!(this.currentLine.match(BIBER_WARNING_REGEX));
|
||||
};
|
||||
|
||||
this.currentLineIsNatbibWarning = function () {
|
||||
return !!(this.currentLine.match(NATBIB_WARNING_REGEX));
|
||||
this.currentLineIsPackageWarning = function () {
|
||||
return !!(this.currentLine.match(PACKAGE_WARNING_REGEX));
|
||||
};
|
||||
|
||||
this.currentLineIsHboxWarning = function() {
|
||||
|
@ -169,22 +164,31 @@ define(function() {
|
|||
});
|
||||
};
|
||||
|
||||
this.parseBiberWarningLine = function() {
|
||||
// Biber warnings are multiple lines, let's parse the first line
|
||||
var warningMatch = this.currentLine.match(BIBER_WARNING_REGEX);
|
||||
this.parseMultipleWarningLine = function() {
|
||||
// Some package warnings are multiple lines, let's parse the first line
|
||||
var warningMatch = this.currentLine.match(PACKAGE_WARNING_REGEX);
|
||||
if (!warningMatch) return; // Something strange happened, return early
|
||||
|
||||
// Now loop over the other output and just grab the message part
|
||||
// Each line is prefiex with: (biblatex)
|
||||
var warning_lines = [warningMatch[1]];
|
||||
while (((this.currentLine = this.log.nextLine()) !== false) &&
|
||||
(warningMatch = this.currentLine.match(/^\(biblatex\)[\s]+(.*)$/))) {
|
||||
warning_lines.push(warningMatch[1])
|
||||
var lineMatch = this.currentLine.match(LINES_REGEX);
|
||||
var line = lineMatch ? parseInt(lineMatch[1], 10) : null;
|
||||
var packageMatch = this.currentLine.match(PACKAGE_REGEX);
|
||||
var packageName = packageMatch[1];
|
||||
|
||||
// Regex to get rid of the unnecesary (packagename) prefix in most multi-line warnings
|
||||
var prefixRegex = new RegExp("(?:\\(" + packageName + "\\))*[\\s]*(.*)", "i");
|
||||
|
||||
// After every warning message there's a blank line, let's use it
|
||||
while (!!(this.currentLine = this.log.nextLine())) {
|
||||
lineMatch = this.currentLine.match(LINES_REGEX);
|
||||
line = lineMatch ? parseInt(lineMatch[1], 10) : line;
|
||||
warningMatch = this.currentLine.match(prefixRegex)
|
||||
warning_lines.push(warningMatch[1]);
|
||||
}
|
||||
|
||||
var raw_message = warning_lines.join(' ');
|
||||
this.data.push({
|
||||
line : null, // Unfortunately, biber doesn't return a line number
|
||||
line : line,
|
||||
file : this.currentFilePath,
|
||||
level : "warning",
|
||||
message : raw_message,
|
||||
|
|
Loading…
Reference in a new issue