Skip to content

Commit 0548c25

Browse files
committed
added exemptions
1 parent 9f91b1c commit 0548c25

File tree

3 files changed

+30
-7
lines changed

3 files changed

+30
-7
lines changed

src/content.js

+23-6
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,8 @@ function generateLink(src) {
2121
return link;
2222
}
2323

24-
function makeBerndGreatAgain() {
25-
findTextNodes(document.body).forEach(
26-
node => (node.textContent = node.textContent.replace(/Björn Höcke/g, 'Bernd Höcke'))
27-
);
24+
function makeBerndGreatAgain(nodes) {
25+
nodes.forEach(node => (node.textContent = node.textContent.replace(/Björn Höcke/g, 'Bernd Höcke')));
2826
}
2927

3028
// extend text content with extension sentences
@@ -51,18 +49,35 @@ function main({ highlight, amount }) {
5149

5250
const textNodes = findTextNodes(document.body);
5351

52+
const exemptRegex = RegExp(exemptions.join('|'), 'g');
53+
const exemptNodes = [];
54+
textNodes.forEach(node => {
55+
let rx;
56+
while ((rx = exemptRegex.exec(node.textContent))) {
57+
exemptNodes.push({ node, start: rx.index, end: rx.index + rx[0].length });
58+
}
59+
});
60+
5461
items.forEach(item => {
5562
const nameNodes = [];
5663
textNodes.forEach(node => {
5764
let rx;
5865
while ((rx = item.regex.exec(node.textContent))) {
59-
nameNodes.push({ node, index: rx.index + rx[0].length });
66+
if (
67+
!exemptNodes.some(
68+
exNode => exNode.node === node && exNode.end > rx.index && exNode.start < rx.index + rx[0].length
69+
)
70+
) {
71+
nameNodes.push({ node, index: rx.index + rx[0].length });
72+
}
6073
}
6174
});
75+
6276
switch (amount) {
6377
case '1':
6478
addAddition(nameNodes[0], item, highlight);
6579
break;
80+
6681
case '5':
6782
for (let i = nameNodes.length - 1; i > 0; i--) {
6883
let j = Math.floor(Math.random() * (i + 1));
@@ -73,12 +88,14 @@ function main({ highlight, amount }) {
7388
.sort((a, b) => b.index - a.index)
7489
.forEach(node => addAddition(node, item, highlight));
7590
break;
91+
7692
default:
7793
nameNodes.reverse().forEach(node => addAddition(node, item, highlight));
7894
break;
7995
}
8096
});
81-
makeBerndGreatAgain();
97+
98+
makeBerndGreatAgain(textNodes);
8299
}
83100

84101
getSettings(main);

src/data.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var data = [
1+
const data = [
22
{
33
'forename': 'Björn',
44
'name': 'Höcke',
@@ -555,3 +555,8 @@ var data = [
555555
]
556556
}
557557
];
558+
559+
const exemptions = [
560+
"Wolfgang Petry",
561+
"Junge Alternative"
562+
]

test/index.html

+1
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@
1212
<p>Lorem ipsum Horst Seehofer dolor sit amet consectetur adipisicing elit.</p>
1313
<p>Lorem ipsum dolor sit amet Alice Weidel! consectetur adipisicing elit Seehofer!</p>
1414
<p>Volker Kauder lorem Kauder ipsum Kauder dolor Kauder sit Kauder amet Kauder.</p>
15+
<p>Uwe Junge lorem Junge Alternative lorem Junge!</p>
1516
</body>
1617
</html>

0 commit comments

Comments
 (0)