From 47abf76e88e3f7afa1f41444c9575845b76d6773 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Tue, 7 Feb 2017 01:39:22 -0800 Subject: [PATCH] Comment the scary regexp. --- .internal/stringToPath.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.internal/stringToPath.js b/.internal/stringToPath.js index 4a73d3c76..2c181bf8d 100644 --- a/.internal/stringToPath.js +++ b/.internal/stringToPath.js @@ -2,7 +2,20 @@ import memoizeCapped from './memoizeCapped.js' /** Used to match property names within property paths. */ const reLeadingDot = /^\./ -const rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g + +const rePropName = RegExp([ + // Match anything that isn't a dot or bracket. + '[^.[\\]]+', + // Or match property names within brackets. + '\\[(?:' + + // Match numbers. + '(-?\\d+(?:\\.\\d+)?)' + '|' + + // Or match strings (supports escaping quotation marks). + '(["\'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2' + + ')\\]', + // Or match "" as the space between consecutive dots or empty brackets. + '(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))' +].join('|'), 'g') /** Used to match backslashes in property paths. */ const reEscapeChar = /\\(\\)?/g