diff --git a/services/web/app/src/Features/Metadata/MetaHandler.js b/services/web/app/src/Features/Metadata/MetaHandler.js index 0b01e4ad9f..ce8f004788 100644 --- a/services/web/app/src/Features/Metadata/MetaHandler.js +++ b/services/web/app/src/Features/Metadata/MetaHandler.js @@ -84,7 +84,8 @@ module.exports = MetaHandler = { const labelRe = MetaHandler.labelRegex() const packageRe = MetaHandler.usepackageRegex() const reqPackageRe = MetaHandler.ReqPackageRegex() - for (const line of Array.from(lines)) { + for (const rawLine of Array.from(lines)) { + const line = MetaHandler._getNonCommentedContent(rawLine) let labelMatch let clean, messy, packageMatch while ((labelMatch = labelRe.exec(line))) { @@ -128,4 +129,18 @@ module.exports = MetaHandler = { } return projectMeta }, + + /** + * Trims comment content from line + * @param {string} rawLine + * @returns {string} + */ + _getNonCommentedContent(rawLine) { + const commentStart = /(?:^%)|(?:[^\\]%)/ + const match = rawLine.match(commentStart) + if (match) { + return rawLine.slice(0, match.index) + } + return rawLine + }, } diff --git a/services/web/test/unit/src/Metadata/MetaHandlerTests.js b/services/web/test/unit/src/Metadata/MetaHandlerTests.js index 0d61138e37..c4514a4950 100644 --- a/services/web/test/unit/src/Metadata/MetaHandlerTests.js +++ b/services/web/test/unit/src/Metadata/MetaHandlerTests.js @@ -187,7 +187,14 @@ describe('MetaHandler', function () { describe('getMetaForDoc', function () { beforeEach(function () { - this.fakeLines = ['\\usepackage{abc}', 'one', '\\label{aaa}', 'two'] + this.fakeLines = [ + '\\usepackage{abc}', + 'one', + '\\label{aaa}', + 'two', + // bbb should not be in the returned labels + 'commented label % \\label{bbb}', + ] this.fakeMeta = { labels: ['aaa'], packages: ['abc'] } this.DocumentUpdaterHandler.flushDocToMongo = sinon .stub()