(result, open='<b>', close='</b>')
| 173 | // this is written as 1 function instead of 2 for minification. perf seems fine ... |
| 174 | // except when minified. the perf is very slow |
| 175 | var highlight = (result, open='<b>', close='</b>') => { |
| 176 | var callback = typeof open === 'function' ? open : undefined |
| 177 | |
| 178 | var target = result.target |
| 179 | var targetLen = target.length |
| 180 | var indexes = result.indexes |
| 181 | var highlighted = '' |
| 182 | var matchI = 0 |
| 183 | var indexesI = 0 |
| 184 | var opened = false |
| 185 | var parts = [] |
| 186 | |
| 187 | for(var i = 0; i < targetLen; ++i) { var char = target[i] |
| 188 | if(indexes[indexesI] === i) { |
| 189 | ++indexesI |
| 190 | if(!opened) { opened = true |
| 191 | if(callback) { |
| 192 | parts.push(highlighted); highlighted = '' |
| 193 | } else { |
| 194 | highlighted += open |
| 195 | } |
| 196 | } |
| 197 | |
| 198 | if(indexesI === indexes.length) { |
| 199 | if(callback) { |
| 200 | highlighted += char |
| 201 | parts.push(callback(highlighted, matchI++)); highlighted = '' |
| 202 | parts.push(target.substr(i+1)) |
| 203 | } else { |
| 204 | highlighted += char + close + target.substr(i+1) |
| 205 | } |
| 206 | break |
| 207 | } |
| 208 | } else { |
| 209 | if(opened) { opened = false |
| 210 | if(callback) { |
| 211 | parts.push(callback(highlighted, matchI++)); highlighted = '' |
| 212 | } else { |
| 213 | highlighted += close |
| 214 | } |
| 215 | } |
| 216 | } |
| 217 | highlighted += char |
| 218 | } |
| 219 | |
| 220 | return callback ? parts : highlighted |
| 221 | } |
| 222 | |
| 223 | |
| 224 | var prepare = (target) => { |
no outgoing calls
no test coverage detected
searching dependent graphs…