From 8cef151937e74a20049a5be2546d5f761a1ee5de Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 13 Mar 2021 17:42:12 +0100 Subject: Adding upstream version 7.5.1+dfsg. Signed-off-by: Daniel Baumann --- src/scripts/pattern-tester.js | 77 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 src/scripts/pattern-tester.js (limited to 'src/scripts/pattern-tester.js') diff --git a/src/scripts/pattern-tester.js b/src/scripts/pattern-tester.js new file mode 100644 index 0000000..83e0a26 --- /dev/null +++ b/src/scripts/pattern-tester.js @@ -0,0 +1,77 @@ +'use strict'; + +// ----------------- Internationalization ------------------ +document.querySelectorAll('[data-i18n]').forEach(node => { + let [text, attr] = node.dataset.i18n.split('|'); + text = chrome.i18n.getMessage(text); + attr ? node[attr] = text : node.appendChild(document.createTextNode(text)); +}); +// ----------------- /Internationalization ----------------- + +// --- global +const url = document.querySelector('#url'); +const pattern = document.querySelector('#pattern'); +const type = document.querySelector('#type'); +const protocols = document.querySelector('#protocols'); +const result = document.querySelector('#result'); + + +document.querySelector('button[data-i18n="test"]').addEventListener('click', testPattern); + + +// ----- check for Edit +const pat = localStorage.getItem('pattern'); +if (pat) { + + pattern.value = pat; + type.value = localStorage.getItem('type'); + protocols.value = localStorage.getItem('protocols'); + + localStorage.removeItem('pattern'); + localStorage.removeItem('type'); + localStorage.removeItem('protocols'); +} + + +function testPattern() { + + // --- reset + url.classList.remove('invalid'); + pattern.classList.remove('invalid'); + result.classList.add('hide'); + result.classList.remove('alert'); + + // --- trim text values + [url, pattern].forEach(item => item.value = item.value.trim()); + + // --- URL check + let parsedURL; + try { parsedURL = new URL(url.value); } + catch (e) { + url.classList.add('invalid'); + showResult(e.message, true); + return; + } + + // --- protocol check + const protocolSet = { // converting to meaningful terms + '1': ['http:', 'https:'], + '2': ['http:'], + '4': ['https:'] + }; + + if (!protocolSet[protocols.value].includes(parsedURL.protocol)) { + showResult(chrome.i18n.getMessage('errorProtocol'), true); + return; + } + + + // --- pattern check + const regex = checkPattern(pattern, type); + if (!regex) { return; } + + // --- pattern on URL check (pattern is valid) + regex.test(parsedURL.host) ? showResult(chrome.i18n.getMessage('patternMatch')) : + showResult(chrome.i18n.getMessage('patternNotMatch'), true); + +} -- cgit v1.2.3