diff --git a/lib/regex.js b/lib/regex.js index 097cd1b..c0f2d6f 100644 --- a/lib/regex.js +++ b/lib/regex.js @@ -5,9 +5,11 @@ function getBreaksRegex(breakKeywords) { var re = '('; var maxIndex = breakKeywords.length - 1; forEach(breakKeywords, function(val, index) { - re += val; - if (index < maxIndex) { - re += '|'; + if (val) { + re += val.trim(); + if (index < maxIndex) { + re += '|'; + } } }); re += '):\\s([\\s\\S]*)'; @@ -18,9 +20,11 @@ function getClosesRegex(closeKeywords) { var re = '(?:'; var maxIndex = closeKeywords.length - 1; forEach(closeKeywords, function(val, index) { - re += val; - if (index < maxIndex) { - re += '|'; + if (val) { + re += val.trim(); + if (index < maxIndex) { + re += '|'; + } } }); re += ')\\s((?:#\\d+(?:\\,\\s)?)+)'; diff --git a/test/regex.spec.js b/test/regex.spec.js index cc7f3d6..2b51305 100644 --- a/test/regex.spec.js +++ b/test/regex.spec.js @@ -3,13 +3,27 @@ var expect = require('chai').expect; var regex = require('../lib/regex'); describe('regex', function() { - it('getBreaksRegex', function() { - var re = regex.getBreaksRegex(['Breaking News', 'Breaking Change']); - expect(re).to.eql(/(Breaking News|Breaking Change):\s([\s\S]*)/); + describe('getBreaksRegex', function() { + it('should generate correct regex', function() { + var re = regex.getBreaksRegex(['Breaking News', 'Breaking Change']); + expect(re).to.eql(/(Breaking News|Breaking Change):\s([\s\S]*)/); + }); + + it('should ignore whitespace', function() { + var re = regex.getBreaksRegex([' Breaking News', 'Breaking Change ', '', ' Breaking SOLUTION ']); + expect(re).to.eql(/(Breaking News|Breaking Change|Breaking SOLUTION):\s([\s\S]*)/); + }); }); - it('getClosesRegex', function() { - var re = regex.getClosesRegex(['Closes', 'amends']); - expect(re).to.eql(/(?:Closes|amends)\s((?:#\d+(?:\,\s)?)+)/gi); + describe('getClosesRegex', function() { + it('should generate correct regex', function() { + var re = regex.getClosesRegex(['Closes', 'amends']); + expect(re).to.eql(/(?:Closes|amends)\s((?:#\d+(?:\,\s)?)+)/gi); + }); + + it('should ignore whitespace', function() { + var re = regex.getClosesRegex([' Closes', 'amends ', '', ' fixes ']); + expect(re).to.eql(/(?:Closes|amends|fixes)\s((?:#\d+(?:\,\s)?)+)/gi); + }); }); });