1/*! 2 * Lunr languages, `German` language 3 * https://github.com/MihaiValentin/lunr-languages 4 * 5 * Copyright 2014, Mihai Valentin 6 * http://www.mozilla.org/MPL/ 7 */ 8/*! 9 * based on 10 * Snowball JavaScript Library v0.3 11 * http://code.google.com/p/urim/ 12 * http://snowball.tartarus.org/ 13 * 14 * Copyright 2010, Oleg Mazko 15 * http://www.mozilla.org/MPL/ 16 */ 17 18/** 19 * export the module via AMD, CommonJS or as a browser global 20 * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js 21 */ 22; 23(function(root, factory) { 24 if (typeof define === 'function' && define.amd) { 25 // AMD. Register as an anonymous module. 26 define(factory) 27 } else if (typeof exports === 'object') { 28 /** 29 * Node. Does not work with strict CommonJS, but 30 * only CommonJS-like environments that support module.exports, 31 * like Node. 32 */ 33 module.exports = factory() 34 } else { 35 // Browser globals (root is window) 36 factory()(root.lunr); 37 } 38}(this, function() { 39 /** 40 * Just return a value to define the module export. 41 * This example returns an object, but the module 42 * can return a function as the exported value. 43 */ 44 return function(lunr) { 45 /* throw error if lunr is not yet included */ 46 if ('undefined' === typeof lunr) { 47 throw new Error('Lunr is not present. Please include / require Lunr before this script.'); 48 } 49 50 /* throw error if lunr stemmer support is not yet included */ 51 if ('undefined' === typeof lunr.stemmerSupport) { 52 throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); 53 } 54 55 /* register specific locale function */ 56 lunr.de = function() { 57 this.pipeline.reset(); 58 this.pipeline.add( 59 lunr.de.trimmer, 60 lunr.de.stopWordFilter, 61 lunr.de.stemmer 62 ); 63 64 // for lunr version 2 65 // this is necessary so that every searched word is also stemmed before 66 // in lunr <= 1 this is not needed, as it is done using the normal pipeline 67 if (this.searchPipeline) { 68 this.searchPipeline.reset(); 69 this.searchPipeline.add(lunr.de.stemmer
vendor: 10,308 bytes, lines 69-380
69) 70 } 71 }; 72 73 /* lunr trimmer function */ 74 lunr.de.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; 75 lunr.de.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.de.wordCharacters); 76 77 lunr.Pipeline.registerFunction(lunr.de.trimmer, 'trimmer-de'); 78 79 /* lunr stemmer function */ 80 lunr.de.stemmer = (function() { 81 /* create the wrapped stemmer object */ 82 var Among = lunr.stemmerSupport.Among, 83 SnowballProgram = lunr.stemmerSupport.SnowballProgram, 84 st = new function GermanStemmer() { 85 var a_0 = [new Among("", -1, 6), new Among("U", 0, 2), 86 new Among("Y", 0, 1), new Among("\u00E4", 0, 3), 87 new Among("\u00F6", 0, 4), new Among("\u00FC", 0, 5) 88 ], 89 a_1 = [ 90 new Among("e", -1, 2), new Among("em", -1, 1), 91 new Among("en", -1, 2), new Among("ern", -1, 1), 92 new Among("er", -1, 1), new Among("s", -1, 3), 93 new Among("es", 5, 2) 94 ], 95 a_2 = [new Among("en", -1, 1), 96 new Among("er", -1, 1), new Among("st", -1, 2), 97 new Among("est", 2, 1) 98 ], 99 a_3 = [new Among("ig", -1, 1), 100 new Among("lich", -1, 1) 101 ], 102 a_4 = [new Among("end", -1, 1), 103 new Among("ig", -1, 2), new Among("ung", -1, 1), 104 new Among("lich", -1, 3), new Among("isch", -1, 2), 105 new Among("ik", -1, 2), new Among("heit", -1, 3), 106 new Among("keit", -1, 4) 107 ], 108 g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 109 0, 0, 0, 0, 0, 0, 8, 0, 32, 8 110 ], 111 g_s_ending = [117, 30, 5], 112 g_st_ending = [ 113 117, 30, 4 114 ], 115 I_x, I_p2, I_p1, sbp = new SnowballProgram(); 116 this.setCurrent = function(word) { 117 sbp.setCurrent(word); 118 }; 119 this.getCurrent = function() { 120 return sbp.getCurrent(); 121 }; 122 123 function habr1(c1, c2, v_1) { 124 if (sbp.eq_s(1, c1)) { 125 sbp.ket = sbp.cursor; 126 if (sbp.in_grouping(g_v, 97, 252)) { 127 sbp.slice_from(c2); 128 sbp.cursor = v_1; 129 return true; 130 } 131 } 132 return false; 133 } 134 135 function r_prelude() { 136 var v_1 = sbp.cursor, 137 v_2, v_3, v_4, v_5; 138 while (true) { 139 v_2 = sbp.cursor; 140 sbp.bra = v_2; 141 if (sbp.eq_s(1, "\u00DF")) { 142 sbp.ket = sbp.cursor; 143 sbp.slice_from("ss"); 144 } else { 145 if (v_2 >= sbp.limit) 146 break; 147 sbp.cursor = v_2 + 1; 148 } 149 } 150 sbp.cursor = v_1; 151 while (true) { 152 v_3 = sbp.cursor; 153 while (true) { 154 v_4 = sbp.cursor; 155 if (sbp.in_grouping(g_v, 97, 252)) { 156 v_5 = sbp.cursor; 157 sbp.bra = v_5; 158 if (habr1("u", "U", v_4)) 159 break; 160 sbp.cursor = v_5; 161 if (habr1("y", "Y", v_4)) 162 break; 163 } 164 if (v_4 >= sbp.limit) { 165 sbp.cursor = v_3; 166 return; 167 } 168 sbp.cursor = v_4 + 1; 169 } 170 } 171 } 172 173 function habr2() { 174 while (!sbp.in_grouping(g_v, 97, 252)) { 175 if (sbp.cursor >= sbp.limit) 176 return true; 177 sbp.cursor++; 178 } 179 while (!sbp.out_grouping(g_v, 97, 252)) { 180 if (sbp.cursor >= sbp.limit) 181 return true; 182 sbp.cursor++; 183 } 184 return false; 185 } 186 187 function r_mark_regions() { 188 I_p1 = sbp.limit; 189 I_p2 = I_p1; 190 var c = sbp.cursor + 3; 191 if (0 <= c && c <= sbp.limit) { 192 I_x = c; 193 if (!habr2()) { 194 I_p1 = sbp.cursor; 195 if (I_p1 < I_x) 196 I_p1 = I_x; 197 if (!habr2()) 198 I_p2 = sbp.cursor; 199 } 200 } 201 } 202 203 function r_postlude() { 204 var among_var, v_1; 205 while (true) { 206 v_1 = sbp.cursor; 207 sbp.bra = v_1; 208 among_var = sbp.find_among(a_0, 6); 209 if (!among_var) 210 return; 211 sbp.ket = sbp.cursor; 212 switch (among_var) { 213 case 1: 214 sbp.slice_from("y"); 215 break; 216 case 2: 217 case 5: 218 sbp.slice_from("u"); 219 break; 220 case 3: 221 sbp.slice_from("a"); 222 break; 223 case 4: 224 sbp.slice_from("o"); 225 break; 226 case 6: 227 if (sbp.cursor >= sbp.limit) 228 return; 229 sbp.cursor++; 230 break; 231 } 232 } 233 } 234 235 function r_R1() { 236 return I_p1 <= sbp.cursor; 237 } 238 239 function r_R2() { 240 return I_p2 <= sbp.cursor; 241 } 242 243 function r_standard_suffix() { 244 var among_var, v_1 = sbp.limit - sbp.cursor, 245 v_2, v_3, v_4; 246 sbp.ket = sbp.cursor; 247 among_var = sbp.find_among_b(a_1, 7); 248 if (among_var) { 249 sbp.bra = sbp.cursor; 250 if (r_R1()) { 251 switch (among_var) { 252 case 1: 253 sbp.slice_del(); 254 break; 255 case 2: 256 sbp.slice_del(); 257 sbp.ket = sbp.cursor; 258 if (sbp.eq_s_b(1, "s")) { 259 sbp.bra = sbp.cursor; 260 if (sbp.eq_s_b(3, "nis")) 261 sbp.slice_del(); 262 } 263 break; 264 case 3: 265 if (sbp.in_grouping_b(g_s_ending, 98, 116)) 266 sbp.slice_del(); 267 break; 268 } 269 } 270 } 271 sbp.cursor = sbp.limit - v_1; 272 sbp.ket = sbp.cursor; 273 among_var = sbp.find_among_b(a_2, 4); 274 if (among_var) { 275 sbp.bra = sbp.cursor; 276 if (r_R1()) { 277 switch (among_var) { 278 case 1: 279 sbp.slice_del(); 280 break; 281 case 2: 282 if (sbp.in_grouping_b(g_st_ending, 98, 116)) { 283 var c = sbp.cursor - 3; 284 if (sbp.limit_backward <= c && c <= sbp.limit) { 285 sbp.cursor = c; 286 sbp.slice_del(); 287 } 288 } 289 break; 290 } 291 } 292 } 293 sbp.cursor = sbp.limit - v_1; 294 sbp.ket = sbp.cursor; 295 among_var = sbp.find_among_b(a_4, 8); 296 if (among_var) { 297 sbp.bra = sbp.cursor; 298 if (r_R2()) { 299 switch (among_var) { 300 case 1: 301 sbp.slice_del(); 302 sbp.ket = sbp.cursor; 303 if (sbp.eq_s_b(2, "ig")) { 304 sbp.bra = sbp.cursor; 305 v_2 = sbp.limit - sbp.cursor; 306 if (!sbp.eq_s_b(1, "e")) { 307 sbp.cursor = sbp.limit - v_2; 308 if (r_R2()) 309 sbp.slice_del(); 310 } 311 } 312 break; 313 case 2: 314 v_3 = sbp.limit - sbp.cursor; 315 if (!sbp.eq_s_b(1, "e")) { 316 sbp.cursor = sbp.limit - v_3; 317 sbp.slice_del(); 318 } 319 break; 320 case 3: 321 sbp.slice_del(); 322 sbp.ket = sbp.cursor; 323 v_4 = sbp.limit - sbp.cursor; 324 if (!sbp.eq_s_b(2, "er")) { 325 sbp.cursor = sbp.limit - v_4; 326 if (!sbp.eq_s_b(2, "en")) 327 break; 328 } 329 sbp.bra = sbp.cursor; 330 if (r_R1()) 331 sbp.slice_del(); 332 break; 333 case 4: 334 sbp.slice_del(); 335 sbp.ket = sbp.cursor; 336 among_var = sbp.find_among_b(a_3, 2); 337 if (among_var) { 338 sbp.bra = sbp.cursor; 339 if (r_R2() && among_var == 1) 340 sbp.slice_del(); 341 } 342 break; 343 } 344 } 345 } 346 } 347 this.stem = function() { 348 var v_1 = sbp.cursor; 349 r_prelude(); 350 sbp.cursor = v_1; 351 r_mark_regions(); 352 sbp.limit_backward = v_1; 353 sbp.cursor = sbp.limit; 354 r_standard_suffix(); 355 sbp.cursor = sbp.limit_backward; 356 r_postlude(); 357 return true; 358 } 359 }; 360 361 /* and return a function that stems a word for the current locale */ 362 return function(token) { 363 // for lunr version 2 364 if (typeof token.update === "function") { 365 return token.update(function(word) { 366 st.setCurrent(word); 367 st.stem(); 368 return st.getCurrent(); 369 }) 370 } else { // for lunr version <= 1 371 st.setCurrent(token); 372 st.stem(); 373 return st.getCurrent(); 374 } 375 } 376 })(); 377 378 lunr.Pipeline.registerFunction(lunr.de.stemmer, 'stemmer-de'); 379 380 lunr.de.
380stopWordFilter = lunr.generateStopWordFilter('aber alle allem allen aller alles als also am an ander andere anderem anderen anderer anderes anderm andern anderr anders auch auf aus bei bin bis bist da damit dann das dasselbe dazu daà dein deine deinem deinen deiner deines dem demselben den denn denselben der derer derselbe derselben des desselben dessen dich die dies diese dieselbe dieselben diesem diesen dieser dieses dir doch dort du durch ein eine einem einen einer eines einig einige einigem einigen einiger einiges einmal er es etwas euch euer eure eurem euren eurer eures für gegen gewesen hab habe haben hat hatte hatten hier hin hinter ich ihm ihn ihnen ihr ihre ihrem ihren ihrer ihres im in indem ins ist jede jedem jeden jeder jedes jene jenem jenen jener jenes jetzt kann kein keine keinem keinen keiner keines können könnte machen man manche manchem manchen mancher manches mein meine meinem meinen meiner meines mich mir mit muss musste nach nicht nichts noch nun nur ob oder ohne sehr sein seine seinem seinen seiner seines selbst sich sie sind so solche solchem solchen solcher solches soll sollte sondern sonst um und uns unse unsem unsen unser unses unter viel vom von vor war waren warst was weg weil weiter welche welchem welchen welcher welches wenn werde werden wie wieder will wir wird wirst wo wollen wollte während würde würden zu zum zur zwar zwischen über'.split(' ')); 381 382 lunr.Pipeline.registerFunction(lunr.de.stopWordFilter, 'stopWordFilter-de'); 383 }; 384}))
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.