From f19364f3bc4bce379058be1653515c70bf7c3ae1 Mon Sep 17 00:00:00 2001 From: Eliott Vincent Date: Tue, 23 May 2023 19:13:43 +0400 Subject: [PATCH] v1.4.2 Fix line regex creation --- lib/parser.js | 18 ++++++++++++------ package.json | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/parser.js b/lib/parser.js index 51b6bde..0befbc1 100644 --- a/lib/parser.js +++ b/lib/parser.js @@ -574,28 +574,30 @@ class Parser { this.__regexes[_key_line] = []; for (var _i = 0; _i < _entry.length; _i++) { - var _regex_original = new RE2(_entry[_i]); + var _regex = _entry[_i]; // Build 'line' alternative? if (LINE_REGEXES.includes(_key)) { - var _regex_line = this.__buildLineRegex(_regex_original); + var _regex_line = this.__buildLineRegex(_regex); this.__regexes[_key_line].push(_regex_line); } - this.__regexes[_key].push(_regex_original); + this.__regexes[_key].push( + new RE2(_regex) + ); } } else { - var _regex_original = new RE2(_entry); + var _regex = _entry; // Build 'line' alternative? if (LINE_REGEXES.includes(_key)) { - var _regex_line = this.__buildLineRegex(_regex_original); + var _regex_line = this.__buildLineRegex(_regex); this.__regexes[_key_line] = _regex_line; } - this.__regexes[_key] = _regex_original; + this.__regexes[_key] = new RE2(_regex); } } } @@ -610,6 +612,10 @@ class Parser { __buildLineRegex(regex) { // A 'line' regex will capture not only inner groups, but also the line \ // itself + // Important: `regex` must be a raw regular expression literal, not an RE2 \ + // instance. It seems that under some inexplicable circumstances, \ + // the RE2 instance sometimes doesn't have its `source` and `flags` \ + // properties correctly populated. var _source = `(${regex.source})`; var _flags = regex.flags; diff --git a/package.json b/package.json index 4d42dc9..1ec8d80 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "email-forward-parser", - "version": "1.4.1", + "version": "1.4.2", "description": "Parses forwarded emails and extract content", "author": "Eliott Vincent ", "main": "lib/index.js",