From 31af1cf3435cf8e5bc53164c08a0bfb1f506610a Mon Sep 17 00:00:00 2001 From: Rob Garrison Date: Sat, 30 Dec 2017 23:17:03 -0600 Subject: [PATCH] Remove negative lookahead & cache regexps --- manage/manage.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/manage/manage.js b/manage/manage.js index f95edf5b..1762b06b 100644 --- a/manage/manage.js +++ b/manage/manage.js @@ -231,6 +231,10 @@ function createStyleTargetsElement({entry, style, iconsOnly}) { const parts = createStyleElement.parts; const entryTargets = $('.targets', entry); const targets = iconsOnly ? entryTargets : parts.targets.cloneNode(true); + const regexpRemoveNegativeLookAhead = /(\?!([^)]+\)))/g; + const regexpMatchRegExp = /\w+[\\.(]+(com|org|co|net|im|io)\b/g; + const regexpReplaceExtraCharacters = /[\\(]/g; + const regexpMatchDomain = /^.*?:\/\/([^/]+)/; let container = targets; let numTargets = 0; const displayed = new Set(); @@ -255,10 +259,10 @@ function createStyleTargetsElement({entry, style, iconsOnly}) { } else if (targetValue.startsWith('chrome-extension:') || targetValue.startsWith('moz-extension:')) { favicon = OWN_ICON; } else if (type === 'regexps') { - favicon = targetValue.match(/\w+[\\.(]+(com|org|co|net|im|io)\b/g); - favicon = favicon ? GET_FAVICON_URL + favicon.shift().replace(/[\\(]/g, '') : ''; + favicon = targetValue.replace(regexpRemoveNegativeLookAhead, '').match(regexpMatchRegExp); + favicon = favicon ? GET_FAVICON_URL + favicon.shift().replace(regexpReplaceExtraCharacters, '') : ''; } else { - favicon = targetValue.includes('://') && targetValue.match(/^.*?:\/\/([^/]+)/); + favicon = targetValue.includes('://') && targetValue.match(regexpMatchDomain); favicon = favicon ? GET_FAVICON_URL + favicon[1] : ''; } if (favicon) {