From 5e4cdf9276d0e44f55f0848a8481fc4050f4e51c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20S=C3=A1nchez=20Ortega?= Date: Sun, 20 Dec 2020 15:37:15 +0100 Subject: [PATCH] Tweak directive regexp, force space after semicolon to separate directives in same line. Should fix #57 --- spec/leafdoc-e2e-spec.js | 1 + spec/specRunner.html | 8 ++++---- src/leafdoc.mjs | 11 ++++++++--- src/regexps.mjs | 2 +- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/spec/leafdoc-e2e-spec.js b/spec/leafdoc-e2e-spec.js index 2f76963..21ef5db 100644 --- a/spec/leafdoc-e2e-spec.js +++ b/spec/leafdoc-e2e-spec.js @@ -14,6 +14,7 @@ describe('e2e tests', () => { for (const i in dirs) { const dirName = dirs[i]; +// if (dirName !== 'leaflet-vml') { continue; } const dir = `./spec/e2e/${ dirName }/`; it(dirName, () => { diff --git a/spec/specRunner.html b/spec/specRunner.html index 4c8bfe3..a89b623 100644 --- a/spec/specRunner.html +++ b/spec/specRunner.html @@ -9,13 +9,13 @@ - - - - + + + + diff --git a/src/leafdoc.mjs b/src/leafdoc.mjs index 908c3ec..bca7906 100644 --- a/src/leafdoc.mjs +++ b/src/leafdoc.mjs @@ -252,8 +252,13 @@ export default class Leafdoc { let match; // In "param foo, bar", directive is "param" and content is "foo, bar" while (match = regexps.getLeafDirective().exec(line)) { - if (match[2]) { match[2] = match[2].trim(); } - directives.push([match[1], match[2]]); // [directive, content] + if (match.groups.content) { + match.groups.content = match.groups.content.trim(); + } + directives.push([ + match.groups.directive, + match.groups.content + ]); // console.log('directive match: ', match); blockIsEmpty = false; lineIsValid = true; @@ -261,7 +266,7 @@ export default class Leafdoc { } if (lineIsValid) { - const trailing = line.substr(parsedCharacters + 1).trim(); + const trailing = line.substr(parsedCharacters).trim(); if (trailing) { directives.push(['comment', trailing]); } diff --git a/src/regexps.mjs b/src/regexps.mjs index 22e77f2..956b4a2 100644 --- a/src/regexps.mjs +++ b/src/regexps.mjs @@ -35,7 +35,7 @@ export function getLeafDirective() { // Re-builds the 🍂 directive based on a different leading character export function redoLeafDirective(char) { - global.leafDirective = xRegExp(` \\s* ${ char } (? \\S+ ) (\\s+ (? [^;\\n]+ )){0,1} `, 'gnx'); + global.leafDirective = new RegExp(`\\s*${char}(?\\S+)(\\s+(?.+?))?(?:; |$)`, 'g'); return global.leafDirective; }