From 26be4f84d0884a567f27acc5e01883f1b874c72b Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 12 Jun 2017 15:15:14 +0100 Subject: [PATCH] Re-use parser --- .../Features/Labels/LabelsHandler.coffee | 23 +++++++++++-------- ...Tests.coffee => LabelsHandlerTests.coffee} | 2 +- 2 files changed, 14 insertions(+), 11 deletions(-) rename services/web/test/UnitTests/coffee/Labels/{LabelsHandler.Tests.coffee => LabelsHandlerTests.coffee} (98%) diff --git a/services/web/app/coffee/Features/Labels/LabelsHandler.coffee b/services/web/app/coffee/Features/Labels/LabelsHandler.coffee index f6739e3b3a..1542381e16 100644 --- a/services/web/app/coffee/Features/Labels/LabelsHandler.coffee +++ b/services/web/app/coffee/Features/Labels/LabelsHandler.coffee @@ -1,5 +1,6 @@ ProjectEntityHandler = require "../Project/ProjectEntityHandler" DocumentUpdaterHandler = require('../DocumentUpdater/DocumentUpdaterHandler') +Async = require('async') module.exports = LabelsHandler = @@ -40,14 +41,16 @@ module.exports = LabelsHandler = docLabels.push(labelMatch[1]) callback(null, docLabels) - extractLabelsFromProjectDocs: (docs, callback=(err, projectLabels)->) -> + extractLabelsFromProjectDocs: (projectDocs, callback=(err, projectLabels)->) -> projectLabels = {} # docId => List[Label] - for _docPath, doc of docs - docLabels = [] - for line in doc.lines - re = LabelsHandler.labelCaptureRegex() - while (labelMatch = re.exec(line)) - if labelMatch[1] - docLabels.push(labelMatch[1]) - projectLabels[doc._id] = docLabels - callback(null, projectLabels) + docs = for _path, doc of projectDocs + doc + Async.eachSeries( + docs + , (doc, cb) -> + LabelsHandler.extractLabelsFromDoc doc.lines, (err, docLabels) -> + projectLabels[doc._id] = docLabels + cb(err) + , (err, x) -> + callback(err, projectLabels) + ) diff --git a/services/web/test/UnitTests/coffee/Labels/LabelsHandler.Tests.coffee b/services/web/test/UnitTests/coffee/Labels/LabelsHandlerTests.coffee similarity index 98% rename from services/web/test/UnitTests/coffee/Labels/LabelsHandler.Tests.coffee rename to services/web/test/UnitTests/coffee/Labels/LabelsHandlerTests.coffee index 1db094de65..2ebf6fa623 100644 --- a/services/web/test/UnitTests/coffee/Labels/LabelsHandler.Tests.coffee +++ b/services/web/test/UnitTests/coffee/Labels/LabelsHandlerTests.coffee @@ -61,7 +61,7 @@ describe 'LabelsHandler', -> it 'should not produce an error', (done) -> @LabelsHandler.extractLabelsFromProjectDocs @docs, (err, projectLabels) -> - expect(err).to.equal null + expect(err).to.be.oneOf [null, undefined] done() it 'should extract all the labels', (done) ->