1// Generated by Snowball 2.1.0 - https://snowballstem.org/ 2 3/**@constructor*/ 4HungarianStemmer = function() { 5 var base = new BaseStemmer(); 6 /** @const */ var a_0 = [ 7 ["cs", -1, -1], 8 ["dzs", -1, -1], 9 ["gy", -1, -1], 10 ["ly", -1, -1], 11 ["ny", -1, -1], 12 ["sz", -1, -1], 13 ["ty", -1, -1], 14 ["zs", -1, -1] 15 ]; 16 17 /** @const */ var a_1 = [ 18 ["\u00E1", -1, 1], 19 ["\u00E9", -1, 2] 20 ]; 21 22 /** @const */ var a_2 = [ 23 ["bb", -1, -1], 24 ["cc", -1, -1], 25 ["dd", -1, -1], 26 ["ff", -1, -1], 27 ["gg", -1, -1], 28 ["jj", -1, -1], 29 ["kk", -1, -1], 30 ["ll", -1, -1], 31 ["mm", -1, -1], 32 ["nn", -1, -1], 33 ["pp", -1, -1], 34 ["rr", -1, -1], 35 ["ccs", -1, -1], 36 ["ss", -1, -1], 37 ["zzs", -1, -1], 38 ["tt", -1, -1], 39 ["vv", -1, -1], 40 ["ggy", -1, -1], 41 ["lly", -1, -1], 42 ["nny", -1, -1], 43 ["tty", -1, -1], 44 ["ssz", -1, -1], 45 ["zz", -1, -1] 46 ]; 47 48 /** @const */ var a_3 = [ 49 ["al", -1, 1], 50 ["el", -1, 1] 51 ]; 52 53 /** @const */ var a_4 = [ 54 ["ba", -1, -1], 55 ["ra", -1, -1], 56 ["be", -1, -1], 57 ["re", -1, -1], 58 ["ig", -1, -1], 59 ["nak", -1, -1], 60 ["nek", -1, -1], 61 ["val", -1, -1], 62 ["vel", -1, -1], 63 ["ul", -1, -1], 64 ["n\u00E1l", -1, -1], 65 ["n\u00E9l", -1, -1], 66 ["b\u00F3l", -1, -1], 67 ["r\u00F3l", -1, -1], 68 ["t\u00F3l", -1, -1], 69 ["\u00FCl", -1, -1], 70 ["b\u0151l", -1, -1], 71 ["r\u0151l", -1, -1], 72 ["t\u0151l", -1, -1], 73 ["n", -1, -1], 74 ["an", 19, -1], 75 ["ban", 20, -1], 76 ["en", 19, -1], 77 ["ben", 22, -1], 78 ["k\u00E9ppen", 22, -1], 79 ["on", 19, -1], 80 ["\u00F6n", 19, -1], 81 ["k\u00E9pp", -1, -1], 82 ["kor", -1, -1], 83 ["t", -1, -1], 84 ["at", 29, -1], 85 ["et", 29, -1], 86 ["k\u00E9nt", 29, -1], 87 ["ank\u00E9nt", 32, -1], 88 ["enk\u00E9nt", 32, -1], 89 ["onk\u00E9nt", 32, -1], 90 ["ot", 29, -1], 91 ["\u00E9rt", 29, -1], 92 ["\u00F6t", 29, -1], 93 ["hez", -1, -1], 94 ["hoz", -1, -1], 95 ["h\u00F6z", -1, -1], 96 ["v\u00E1", -1, -1], 97 ["v\u00E9", -1, -1] 98 ]; 99 100 /** @const */ var a_5 = [ 101 ["\u00E1n", -1, 2], 102 ["\u00E9n", -1, 1], 103 ["\u00E1nk\u00E9nt", -1, 2] 104 ]; 105 106 /** @const */ var a_6 = [ 107 ["stul", -1, 1], 108 ["astul", 0, 1], 109 ["\u00E1stul", 0, 2], 110 ["st\u00FCl", -1, 1], 111 ["est\u00FCl", 3, 1], 112 ["\u00E9st\u00FCl", 3, 3] 113 ]; 114 115 /** @const */ var a_7 = [ 116 ["\u00E1", -1, 1], 117 ["\u00E9", -1, 1] 118 ]; 119 120 /** @const */ var a_8 = [ 121 ["k", -1, 3], 122 ["ak", 0, 3], 123 ["ek", 0, 3], 124 ["ok", 0, 3], 125 ["\u00E1k", 0, 1], 126 ["\u00E9k", 0, 2], 127 ["\u00F6k", 0, 3] 128 ]; 129 130 /** @const */ var a_9 = [ 131 ["\u00E9i", -1, 1], 132 ["\u00E1\u00E9i", 0, 3], 133 ["\u00E9\u00E9i", 0, 2], 134 ["\u00E9", -1, 1], 135 ["k\u00E9", 3, 1], 136 ["ak\u00E9", 4, 1], 137 ["ek\u00E9", 4, 1], 138 ["ok\u00E9", 4, 1], 139 ["\u00E1k\u00E9", 4, 3], 140 ["\u00E9k\u00E9", 4, 2], 141 ["\u00F6k\u00E9", 4, 1], 142 ["\u00E9\u00E9", 3, 2] 143 ]; 144 145 /** @const */ var a_10 = [ 146 ["a", -1, 1], 147 ["ja", 0, 1], 148 ["d", -1, 1], 149 ["ad", 2, 1], 150 ["ed", 2, 1], 151 ["od", 2, 1], 152 ["\u00E1d", 2, 2], 153 ["\u00E9d", 2, 3], 154 ["\u00F6d", 2, 1], 155 ["e", -1, 1], 156 ["je", 9, 1], 157 ["nk", -1, 1], 158 ["unk", 11, 1], 159 ["\u00E1nk", 11, 2], 160 ["\u00E9nk", 11, 3], 161 ["\u00FCnk", 11, 1], 162 ["uk", -1, 1], 163 ["juk", 16, 1], 164 ["\u00E1juk", 17, 2], 165 ["\u00FCk", -1, 1], 166 ["j\u00FCk", 19, 1], 167 ["\u00E9j\u00FCk", 20, 3], 168 ["m", -1, 1], 169 ["am", 22, 1], 170 ["em", 22, 1], 171 ["om", 22, 1], 172 ["\u00E1m", 22, 2], 173 ["\u00E9m", 22, 3], 174 ["o", -1, 1], 175 ["\u00E1", -1, 2], 176 ["\u00E9", -1, 3] 177 ]; 178 179 /** @const */ var a_11 = [ 180 ["id", -1, 1], 181 ["aid", 0, 1], 182 ["jaid", 1, 1], 183 ["eid", 0, 1], 184 ["jeid", 3, 1], 185 ["\u00E1id", 0, 2], 186 ["\u00E9id", 0, 3], 187 ["i", -1, 1], 188 ["ai", 7, 1], 189 ["jai", 8, 1], 190 ["ei", 7, 1], 191 ["jei", 10, 1], 192 ["\u00E1i", 7, 2], 193 ["\u00E9i", 7, 3], 194 ["itek", -1, 1], 195 ["eitek", 14, 1], 196 ["jeitek", 15, 1], 197 ["\u00E9itek", 14, 3], 198 ["ik", -1, 1], 199 ["aik", 18, 1], 200 ["jaik", 19, 1], 201 ["eik", 18, 1], 202 ["jeik", 21, 1], 203 ["\u00E1ik", 18, 2], 204 ["\u00E9ik", 18, 3], 205 ["ink", -1, 1], 206 ["aink", 25, 1], 207 ["jaink", 26, 1], 208 ["eink", 25, 1], 209 ["jeink", 28, 1], 210 ["\u00E1ink", 25, 2], 211 ["\u00E9ink", 25, 3], 212 ["aitok", -1, 1], 213 ["jaitok", 32, 1], 214 ["\u00E1itok", -1, 2], 215 ["im", -1, 1], 216 ["aim", 35, 1], 217 ["jaim", 36, 1], 218 ["eim", 35, 1], 219 ["jeim", 38, 1], 220 ["\u00E1im", 35, 2], 221 ["\u00E9im", 35, 3] 222 ]; 223 224 /** @const */ var /** Array<int> */ g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 36, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1]; 225 226 var /** number */ I_p1 = 0; 227 228 229 /** @return {boolean} */ 230 function r_mark_regions() { 231 I_p1 = base.limit; 232 lab0: { 233 var /** number */ v_1 = base.cursor; 234 lab1: { 235 if (!(base.in_grouping(g_v, 97, 369))) 236 { 237 break lab1; 238 } 239 golab2: while(true) 240 { 241 var /** number */ v_2 = base.cursor; 242 lab3: { 243 if (!(base.out_grouping(g_v, 97, 369))) 244 { 245 break lab3; 246 } 247 base.cursor = v_2; 248 break golab2; 249 } 250 base.cursor = v_2; 251 if (base.cursor >= base.limit) 252 { 253 break lab1; 254 } 255 base.cursor++; 256 } 257 lab4: { 258 var /** number */ v_3 = base.cursor; 259 lab5: { 260 if (base.find_among(a_0) == 0) 261 { 262 break lab5; 263 } 264 break lab4; 265 } 266 base.cursor = v_3; 267 if (base.cursor >= base.limit) 268 { 269 break lab1; 270 } 271 base.cursor++; 272 } 273 I_p1 = base.cursor; 274 break lab0; 275 } 276 base.cursor = v_1; 277 if (!(base.out_grouping(g_v, 97, 369))) 278 { 279 return false; 280 } 281 golab6: while(true) 282 { 283 lab7: { 284 if (!(base.in_grouping(g_v, 97, 369))) 285 { 286 break lab7; 287 } 288 break golab6; 289 } 290 if (base.cursor >= base.limit) 291 { 292 return false; 293 } 294 base.cursor++; 295 } 296 I_p1 = base.cursor; 297 } 298 return true; 299 }; 300 301 /** @return {boolean} */ 302 function r_R1() { 303 if (!(I_p1 <= base.cursor)) 304 { 305 return false; 306 } 307 return true; 308 }; 309 310 /** @return {boolean} */ 311 function r_v_ending() { 312 var /** number */ among_var; 313 base.ket = base.cursor; 314 among_var = base.find_among_b(a_1); 315 if (among_var == 0) 316 { 317 return false; 318 } 319 base.bra = base.cursor; 320 if (!r_R1()) 321 { 322 return false; 323 } 324 switch (among_var) { 325 case 1: 326 if (!base.slice_from("a")) 327 { 328 return false; 329 } 330 break; 331 case 2: 332 if (!base.slice_from("e")) 333 { 334 return false; 335 } 336 break; 337 } 338 return true; 339 }; 340 341 /** @return {boolean} */ 342 function r_double() { 343 var /** number */ v_1 = base.limit - base.cursor; 344 if (base.find_among_b(a_2) == 0) 345 { 346 return false; 347 } 348 base.cursor = base.limit - v_1; 349 return true; 350 }; 351 352 /** @return {boolean} */ 353 function r_undouble() { 354 if (base.cursor <= base.limit_backward) 355 { 356 return false; 357 } 358 base.cursor--; 359 base.ket = base.cursor; 360 { 361 var /** number */ c1 = base.cursor - 1; 362 if (c1 < base.limit_backward) 363 { 364 return false; 365 } 366 base.cursor = c1; 367 } 368 base.bra = base.cursor; 369 if (!base.slice_del()) 370 { 371 return false; 372 } 373 return true; 374 }; 375 376 /** @return {boolean} */ 377 function r_instrum() { 378 base.ket = base.cursor; 379 if (base.find_among_b(a_3) == 0) 380 { 381 return false; 382 } 383 base.bra = base.cursor; 384 if (!r_R1()) 385 { 386 return false; 387 } 388 if (!r_double()) 389 { 390 return false; 391 } 392 if (!base.slice_del()) 393 { 394 return false; 395 } 396 if (!r_undouble()) 397 { 398 return false; 399 } 400 return true; 401 }; 402 403 /** @return {boolean} */ 404 function r_case() { 405 base.ket = base.cursor; 406 if (base.find_among_b(a_4) == 0) 407 { 408 return false; 409 } 410 base.bra = base.cursor; 411 if (!r_R1()) 412 { 413 return false; 414 } 415 if (!base.slice_del()) 416 { 417 return false; 418 } 419 if (!r_v_ending()) 420 { 421 return false; 422 } 423 return true; 424 }; 425 426 /** @return {boolean} */ 427 function r_case_special() { 428 var /** number */ among_var; 429 base.ket = base.cursor; 430 among_var = base.find_among_b(a_5); 431 if (among_var == 0) 432 { 433 return false; 434 } 435 base.bra = base.cursor; 436 if (!r_R1()) 437 { 438 return false; 439 } 440 switch (among_var) { 441 case 1: 442 if (!base.slice_from("e")) 443 { 444 return false; 445 } 446 break; 447 case 2: 448 if (!base.slice_from("a")) 449 { 450 return false; 451 } 452 break; 453 } 454 return true; 455 }; 456 457 /** @return {boolean} */ 458 function r_case_other() { 459 var /** number */ among_var; 460 base.ket = base.cursor; 461 among_var = base.find_among_b(a_6); 462 if (among_var == 0) 463 { 464 return false; 465 } 466 base.bra = base.cursor; 467 if (!r_R1()) 468 { 469 return false; 470 } 471 switch (among_var) { 472 case 1: 473 if (!base.slice_del()) 474 { 475 return false; 476 } 477 break; 478 case 2: 479 if (!base.slice_from("a")) 480 { 481 return false; 482 } 483 break; 484 case 3: 485 if (!base.slice_from("e")) 486 { 487 return false; 488 } 489 break; 490 } 491 return true; 492 }; 493 494 /** @return {boolean} */ 495 function r_factive() { 496 base.ket = base.cursor; 497 if (base.find_among_b(a_7) == 0) 498 { 499 return false; 500 } 501 base.bra = base.cursor; 502 if (!r_R1()) 503 { 504 return false; 505 } 506 if (!r_double()) 507 { 508 return false; 509 } 510 if (!base.slice_del()) 511 { 512 return false; 513 } 514 if (!r_undouble()) 515 { 516 return false; 517 } 518 return true; 519 }; 520 521 /** @return {boolean} */ 522 function r_plural() { 523 var /** number */ among_var; 524 base.ket = base.cursor; 525 among_var = base.find_among_b(a_8); 526 if (among_var == 0) 527 { 528 return false; 529 } 530 base.bra = base.cursor; 531 if (!r_R1()) 532 { 533 return false; 534 } 535 switch (among_var) { 536 case 1: 537 if (!base.slice_from("a")) 538 { 539 return false; 540 } 541 break; 542 case 2: 543 if (!base.slice_from("e")) 544 { 545 return false; 546 } 547 break; 548 case 3: 549 if (!base.slice_del()) 550 { 551 return false; 552 } 553 break; 554 } 555 return true; 556 }; 557 558 /** @return {boolean} */ 559 function r_owned() { 560 var /** number */ among_var; 561 base.ket = base.cursor; 562 among_var = base.find_among_b(a_9); 563 if (among_var == 0) 564 { 565 return false; 566 } 567 base.bra = base.cursor; 568 if (!r_R1()) 569 { 570 return false; 571 } 572 switch (among_var) { 573 case 1: 574 if (!base.slice_del()) 575 { 576 return false; 577 } 578 break; 579 case 2: 580 if (!base.slice_from("e")) 581 { 582 return false; 583 } 584 break; 585 case 3: 586 if (!base.slice_from("a")) 587 { 588 return false; 589 } 590 break; 591 } 592 return true; 593 }; 594 595 /** @return {boolean} */ 596 function r_sing_owner() { 597 var /** number */ among_var; 598 base.ket = base.cursor; 599 among_var = base.find_among_b(a_10); 600 if (among_var == 0) 601 { 602 return false; 603 } 604 base.bra = base.cursor; 605 if (!r_R1()) 606 { 607 return false; 608 } 609 switch (among_var) { 610 case 1: 611 if (!base.slice_del()) 612 { 613 return false; 614 } 615 break; 616 case 2: 617 if (!base.slice_from("a")) 618 { 619 return false; 620 } 621 break; 622 case 3: 623 if (!base.slice_from("e")) 624 { 625 return false; 626 } 627 break; 628 } 629 return true; 630 }; 631 632 /** @return {boolean} */ 633 function r_plur_owner() { 634 var /** number */ among_var; 635 base.ket = base.cursor; 636 among_var = base.find_among_b(a_11); 637 if (among_var == 0) 638 { 639 return false; 640 } 641 base.bra = base.cursor; 642 if (!r_R1()) 643 { 644 return false; 645 } 646 switch (among_var) { 647 case 1: 648 if (!base.slice_del()) 649 { 650 return false; 651 } 652 break; 653 case 2: 654 if (!base.slice_from("a")) 655 { 656 return false; 657 } 658 break; 659 case 3: 660 if (!base.slice_from("e")) 661 { 662 return false; 663 } 664 break; 665 } 666 return true; 667 }; 668 669 this.stem = /** @return {boolean} */ function() { 670 var /** number */ v_1 = base.cursor; 671 r_mark_regions(); 672 base.cursor = v_1; 673 base.limit_backward = base.cursor; base.cursor = base.limit; 674 var /** number */ v_2 = base.limit - base.cursor; 675 r_instrum(); 676 base.cursor = base.limit - v_2; 677 var /** number */ v_3 = base.limit - base.cursor; 678 r_case(); 679 base.cursor = base.limit - v_3; 680 var /** number */ v_4 = base.limit - base.cursor; 681 r_case_special(); 682 base.cursor = base.limit - v_4; 683 var /** number */ v_5 = base.limit - base.cursor; 684 r_case_other(); 685 base.cursor = base.limit - v_5; 686 var /** number */ v_6 = base.limit - base.cursor; 687 r_factive(); 688 base.cursor = base.limit - v_6; 689 var /** number */ v_7 = base.limit - base.cursor; 690 r_owned(); 691 base.cursor = base.limit - v_7; 692 var /** number */ v_8 = base.limit - base.cursor; 693 r_sing_owner(); 694 base.cursor = base.limit - v_8; 695 var /** number */ v_9 = base.limit - base.cursor; 696 r_plur_owner(); 697 base.cursor = base.limit - v_9; 698 var /** number */ v_10 = base.limit - base.cursor; 699 r_plural(); 700 base.cursor = base.limit - v_10; 701 base.cursor = base.limit_backward; 702 return true; 703 }; 704 705 /**@return{string}*/ 706 this['stemWord'] = function(/**string*/word) { 707 base.setCurrent(word); 708 this.stem(); 709 return base.getCurrent(); 710 }; 711}; 712