@@ -21,10 +21,8 @@ function generateLink(src) {
21
21
return link ;
22
22
}
23
23
24
- function makeBerndGreatAgain ( ) {
25
- findTextNodes ( document . body ) . forEach (
26
- node => ( node . textContent = node . textContent . replace ( / B j ö r n H ö c k e / g, 'Bernd Höcke' ) )
27
- ) ;
24
+ function makeBerndGreatAgain ( nodes ) {
25
+ nodes . forEach ( node => ( node . textContent = node . textContent . replace ( / B j ö r n H ö c k e / g, 'Bernd Höcke' ) ) ) ;
28
26
}
29
27
30
28
// extend text content with extension sentences
@@ -51,18 +49,35 @@ function main({ highlight, amount }) {
51
49
52
50
const textNodes = findTextNodes ( document . body ) ;
53
51
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
+
54
61
items . forEach ( item => {
55
62
const nameNodes = [ ] ;
56
63
textNodes . forEach ( node => {
57
64
let rx ;
58
65
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
+ }
60
73
}
61
74
} ) ;
75
+
62
76
switch ( amount ) {
63
77
case '1' :
64
78
addAddition ( nameNodes [ 0 ] , item , highlight ) ;
65
79
break ;
80
+
66
81
case '5' :
67
82
for ( let i = nameNodes . length - 1 ; i > 0 ; i -- ) {
68
83
let j = Math . floor ( Math . random ( ) * ( i + 1 ) ) ;
@@ -73,12 +88,14 @@ function main({ highlight, amount }) {
73
88
. sort ( ( a , b ) => b . index - a . index )
74
89
. forEach ( node => addAddition ( node , item , highlight ) ) ;
75
90
break ;
91
+
76
92
default :
77
93
nameNodes . reverse ( ) . forEach ( node => addAddition ( node , item , highlight ) ) ;
78
94
break ;
79
95
}
80
96
} ) ;
81
- makeBerndGreatAgain ( ) ;
97
+
98
+ makeBerndGreatAgain ( textNodes ) ;
82
99
}
83
100
84
101
getSettings ( main ) ;
0 commit comments