comparison src/arabic.c @ 11034:8ae6d6052b14 v8.0.0406

patch 8.0.0406: arabic shaping code is verbose commit https://github.com/vim/vim/commit/7f73b54631af3f0e6f0acd1a1b4c9e8436784705 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Mar 4 14:50:19 2017 +0100 patch 8.0.0406: arabic shaping code is verbose Problem: The arabic shaping code is verbose. Solution: Shorten the code without changing the functionality.
author Christian Brabandt <cb@256bit.org>
date Sat, 04 Mar 2017 15:00:04 +0100
parents f91d4c95b696
children 3fa27b97d263
comparison
equal deleted inserted replaced
11033:b4517d047b29 11034:8ae6d6052b14
238 case a_MEEM: return a_s_MEEM; 238 case a_MEEM: return a_s_MEEM;
239 case a_NOON: return a_s_NOON; 239 case a_NOON: return a_s_NOON;
240 case a_HEH: return a_s_HEH; 240 case a_HEH: return a_s_HEH;
241 case a_YEH: return a_s_YEH; 241 case a_YEH: return a_s_YEH;
242 } 242 }
243
244 return 0; 243 return 0;
245 } 244 }
246 245
247 246
248 /* 247 /*
303 case a_MEEM: return a_i_MEEM; 302 case a_MEEM: return a_i_MEEM;
304 case a_NOON: return a_i_NOON; 303 case a_NOON: return a_i_NOON;
305 case a_HEH: return a_i_HEH; 304 case a_HEH: return a_i_HEH;
306 case a_YEH: return a_i_YEH; 305 case a_YEH: return a_i_YEH;
307 } 306 }
308
309 return 0; 307 return 0;
310 } 308 }
311 309
312 310
313 /* 311 /*
354 case a_HEH: return a_m_HEH; 352 case a_HEH: return a_m_HEH;
355 case a_WAW: return a_f_WAW; /* exception */ 353 case a_WAW: return a_f_WAW; /* exception */
356 case a_ALEF_MAKSURA: return a_f_ALEF_MAKSURA; /* exception */ 354 case a_ALEF_MAKSURA: return a_f_ALEF_MAKSURA; /* exception */
357 case a_YEH: return a_m_YEH; 355 case a_YEH: return a_m_YEH;
358 } 356 }
359
360 return 0; 357 return 0;
361 } 358 }
362 359
363 360
364 /* 361 /*
365 * Change shape - from ISO-8859-6/Isolated to final 362 * Change shape - from ISO-8859-6/Isolated to final
366 */ 363 */
367 static int 364 static int
368 chg_c_a2f(int cur_c) 365 chg_c_a2f(int cur_c)
369 { 366 {
370 int tempc;
371
372 /* NOTE: these encodings need to be accounted for 367 /* NOTE: these encodings need to be accounted for
373 368 * a_f_ALEF_MADDA;
374 a_f_ALEF_MADDA; 369 * a_f_ALEF_HAMZA_ABOVE;
375 a_f_ALEF_HAMZA_ABOVE; 370 * a_f_ALEF_HAMZA_BELOW;
376 a_f_ALEF_HAMZA_BELOW; 371 * a_f_LAM_ALEF_MADDA_ABOVE;
377 a_f_LAM_ALEF_MADDA_ABOVE; 372 * a_f_LAM_ALEF_HAMZA_ABOVE;
378 a_f_LAM_ALEF_HAMZA_ABOVE; 373 * a_f_LAM_ALEF_HAMZA_BELOW;
379 a_f_LAM_ALEF_HAMZA_BELOW; 374 */
380 */ 375 switch (cur_c)
381 376 {
382 switch (cur_c) 377 case a_HAMZA: return a_s_HAMZA; /* exception */
383 { 378 case a_ALEF_MADDA: return a_f_ALEF_MADDA;
384 case a_HAMZA: /* exception */ 379 case a_ALEF_HAMZA_ABOVE: return a_f_ALEF_HAMZA_ABOVE;
385 tempc = a_s_HAMZA; 380 case a_WAW_HAMZA: return a_f_WAW_HAMZA;
386 break; 381 case a_ALEF_HAMZA_BELOW: return a_f_ALEF_HAMZA_BELOW;
387 case a_ALEF_MADDA: 382 case a_YEH_HAMZA: return a_f_YEH_HAMZA;
388 tempc = a_f_ALEF_MADDA; 383 case a_ALEF: return a_f_ALEF;
389 break; 384 case a_BEH: return a_f_BEH;
390 case a_ALEF_HAMZA_ABOVE: 385 case a_TEH_MARBUTA: return a_f_TEH_MARBUTA;
391 tempc = a_f_ALEF_HAMZA_ABOVE; 386 case a_TEH: return a_f_TEH;
392 break; 387 case a_THEH: return a_f_THEH;
393 case a_WAW_HAMZA: 388 case a_JEEM: return a_f_JEEM;
394 tempc = a_f_WAW_HAMZA; 389 case a_HAH: return a_f_HAH;
395 break; 390 case a_KHAH: return a_f_KHAH;
396 case a_ALEF_HAMZA_BELOW: 391 case a_DAL: return a_f_DAL;
397 tempc = a_f_ALEF_HAMZA_BELOW; 392 case a_THAL: return a_f_THAL;
398 break; 393 case a_REH: return a_f_REH;
399 case a_YEH_HAMZA: 394 case a_ZAIN: return a_f_ZAIN;
400 tempc = a_f_YEH_HAMZA; 395 case a_SEEN: return a_f_SEEN;
401 break; 396 case a_SHEEN: return a_f_SHEEN;
402 case a_ALEF: 397 case a_SAD: return a_f_SAD;
403 tempc = a_f_ALEF; 398 case a_DAD: return a_f_DAD;
404 break; 399 case a_TAH: return a_f_TAH;
405 case a_BEH: 400 case a_ZAH: return a_f_ZAH;
406 tempc = a_f_BEH; 401 case a_AIN: return a_f_AIN;
407 break; 402 case a_GHAIN: return a_f_GHAIN;
408 case a_TEH_MARBUTA: 403 case a_TATWEEL: return cur_c; /* exception */
409 tempc = a_f_TEH_MARBUTA; 404 case a_FEH: return a_f_FEH;
410 break; 405 case a_QAF: return a_f_QAF;
411 case a_TEH: 406 case a_KAF: return a_f_KAF;
412 tempc = a_f_TEH; 407 case a_LAM: return a_f_LAM;
413 break; 408 case a_MEEM: return a_f_MEEM;
414 case a_THEH: 409 case a_NOON: return a_f_NOON;
415 tempc = a_f_THEH; 410 case a_HEH: return a_f_HEH;
416 break; 411 case a_WAW: return a_f_WAW;
417 case a_JEEM: 412 case a_ALEF_MAKSURA: return a_f_ALEF_MAKSURA;
418 tempc = a_f_JEEM; 413 case a_YEH: return a_f_YEH;
419 break; 414 }
420 case a_HAH: 415 return 0;
421 tempc = a_f_HAH;
422 break;
423 case a_KHAH:
424 tempc = a_f_KHAH;
425 break;
426 case a_DAL:
427 tempc = a_f_DAL;
428 break;
429 case a_THAL:
430 tempc = a_f_THAL;
431 break;
432 case a_REH:
433 tempc = a_f_REH;
434 break;
435 case a_ZAIN:
436 tempc = a_f_ZAIN;
437 break;
438 case a_SEEN:
439 tempc = a_f_SEEN;
440 break;
441 case a_SHEEN:
442 tempc = a_f_SHEEN;
443 break;
444 case a_SAD:
445 tempc = a_f_SAD;
446 break;
447 case a_DAD:
448 tempc = a_f_DAD;
449 break;
450 case a_TAH:
451 tempc = a_f_TAH;
452 break;
453 case a_ZAH:
454 tempc = a_f_ZAH;
455 break;
456 case a_AIN:
457 tempc = a_f_AIN;
458 break;
459 case a_GHAIN:
460 tempc = a_f_GHAIN;
461 break;
462 case a_TATWEEL: /* exception */
463 tempc = cur_c;
464 break;
465 case a_FEH:
466 tempc = a_f_FEH;
467 break;
468 case a_QAF:
469 tempc = a_f_QAF;
470 break;
471 case a_KAF:
472 tempc = a_f_KAF;
473 break;
474 case a_LAM:
475 tempc = a_f_LAM;
476 break;
477 case a_MEEM:
478 tempc = a_f_MEEM;
479 break;
480 case a_NOON:
481 tempc = a_f_NOON;
482 break;
483 case a_HEH:
484 tempc = a_f_HEH;
485 break;
486 case a_WAW:
487 tempc = a_f_WAW;
488 break;
489 case a_ALEF_MAKSURA:
490 tempc = a_f_ALEF_MAKSURA;
491 break;
492 case a_YEH:
493 tempc = a_f_YEH;
494 break;
495 default:
496 tempc = 0;
497 }
498
499 return tempc;
500 } 416 }
501 417
502 418
503 /* 419 /*
504 * Change shape - from Initial to Medial 420 * Change shape - from Initial to Medial
505 */ 421 */
506 static int 422 static int
507 chg_c_i2m(int cur_c) 423 chg_c_i2m(int cur_c)
508 { 424 {
509 int tempc; 425 switch (cur_c)
510 426 {
511 switch (cur_c) 427 case a_i_YEH_HAMZA: return a_m_YEH_HAMZA;
512 { 428 case a_i_BEH: return a_m_BEH;
513 case a_i_YEH_HAMZA: 429 case a_i_TEH: return a_m_TEH;
514 tempc = a_m_YEH_HAMZA; 430 case a_i_THEH: return a_m_THEH;
515 break; 431 case a_i_JEEM: return a_m_JEEM;
516 case a_i_BEH: 432 case a_i_HAH: return a_m_HAH;
517 tempc = a_m_BEH; 433 case a_i_KHAH: return a_m_KHAH;
518 break; 434 case a_i_SEEN: return a_m_SEEN;
519 case a_i_TEH: 435 case a_i_SHEEN: return a_m_SHEEN;
520 tempc = a_m_TEH; 436 case a_i_SAD: return a_m_SAD;
521 break; 437 case a_i_DAD: return a_m_DAD;
522 case a_i_THEH: 438 case a_i_TAH: return a_m_TAH;
523 tempc = a_m_THEH; 439 case a_i_ZAH: return a_m_ZAH;
524 break; 440 case a_i_AIN: return a_m_AIN;
525 case a_i_JEEM: 441 case a_i_GHAIN: return a_m_GHAIN;
526 tempc = a_m_JEEM; 442 case a_i_FEH: return a_m_FEH;
527 break; 443 case a_i_QAF: return a_m_QAF;
528 case a_i_HAH: 444 case a_i_KAF: return a_m_KAF;
529 tempc = a_m_HAH; 445 case a_i_LAM: return a_m_LAM;
530 break; 446 case a_i_MEEM: return a_m_MEEM;
531 case a_i_KHAH: 447 case a_i_NOON: return a_m_NOON;
532 tempc = a_m_KHAH; 448 case a_i_HEH: return a_m_HEH;
533 break; 449 case a_i_YEH: return a_m_YEH;
534 case a_i_SEEN: 450 }
535 tempc = a_m_SEEN; 451 return 0;
536 break;
537 case a_i_SHEEN:
538 tempc = a_m_SHEEN;
539 break;
540 case a_i_SAD:
541 tempc = a_m_SAD;
542 break;
543 case a_i_DAD:
544 tempc = a_m_DAD;
545 break;
546 case a_i_TAH:
547 tempc = a_m_TAH;
548 break;
549 case a_i_ZAH:
550 tempc = a_m_ZAH;
551 break;
552 case a_i_AIN:
553 tempc = a_m_AIN;
554 break;
555 case a_i_GHAIN:
556 tempc = a_m_GHAIN;
557 break;
558 case a_i_FEH:
559 tempc = a_m_FEH;
560 break;
561 case a_i_QAF:
562 tempc = a_m_QAF;
563 break;
564 case a_i_KAF:
565 tempc = a_m_KAF;
566 break;
567 case a_i_LAM:
568 tempc = a_m_LAM;
569 break;
570 case a_i_MEEM:
571 tempc = a_m_MEEM;
572 break;
573 case a_i_NOON:
574 tempc = a_m_NOON;
575 break;
576 case a_i_HEH:
577 tempc = a_m_HEH;
578 break;
579 case a_i_YEH:
580 tempc = a_m_YEH;
581 break;
582 default:
583 tempc = 0;
584 }
585
586 return tempc;
587 } 452 }
588 453
589 454
590 /* 455 /*
591 * Change shape - from Final to Medial 456 * Change shape - from Final to Medial
592 */ 457 */
593 static int 458 static int
594 chg_c_f2m(int cur_c) 459 chg_c_f2m(int cur_c)
595 { 460 {
596 int tempc;
597
598 switch (cur_c) 461 switch (cur_c)
599 { 462 {
600 /* NOTE: these encodings are multi-positional, no ? 463 /* NOTE: these encodings are multi-positional, no ?
601 case a_f_ALEF_MADDA: 464 * case a_f_ALEF_MADDA:
602 case a_f_ALEF_HAMZA_ABOVE: 465 * case a_f_ALEF_HAMZA_ABOVE:
603 case a_f_ALEF_HAMZA_BELOW: 466 * case a_f_ALEF_HAMZA_BELOW:
604 */ 467 */
605 case a_f_YEH_HAMZA: 468 case a_f_YEH_HAMZA: return a_m_YEH_HAMZA;
606 tempc = a_m_YEH_HAMZA;
607 break;
608 case a_f_WAW_HAMZA: /* exceptions */ 469 case a_f_WAW_HAMZA: /* exceptions */
609 case a_f_ALEF: 470 case a_f_ALEF:
610 case a_f_TEH_MARBUTA: 471 case a_f_TEH_MARBUTA:
611 case a_f_DAL: 472 case a_f_DAL:
612 case a_f_THAL: 473 case a_f_THAL:
613 case a_f_REH: 474 case a_f_REH:
614 case a_f_ZAIN: 475 case a_f_ZAIN:
615 case a_f_WAW: 476 case a_f_WAW:
616 case a_f_ALEF_MAKSURA: 477 case a_f_ALEF_MAKSURA:
617 tempc = cur_c; 478 return cur_c;
618 break; 479 case a_f_BEH: return a_m_BEH;
619 case a_f_BEH: 480 case a_f_TEH: return a_m_TEH;
620 tempc = a_m_BEH; 481 case a_f_THEH: return a_m_THEH;
621 break; 482 case a_f_JEEM: return a_m_JEEM;
622 case a_f_TEH: 483 case a_f_HAH: return a_m_HAH;
623 tempc = a_m_TEH; 484 case a_f_KHAH: return a_m_KHAH;
624 break; 485 case a_f_SEEN: return a_m_SEEN;
625 case a_f_THEH: 486 case a_f_SHEEN: return a_m_SHEEN;
626 tempc = a_m_THEH; 487 case a_f_SAD: return a_m_SAD;
627 break; 488 case a_f_DAD: return a_m_DAD;
628 case a_f_JEEM: 489 case a_f_TAH: return a_m_TAH;
629 tempc = a_m_JEEM; 490 case a_f_ZAH: return a_m_ZAH;
630 break; 491 case a_f_AIN: return a_m_AIN;
631 case a_f_HAH: 492 case a_f_GHAIN: return a_m_GHAIN;
632 tempc = a_m_HAH; 493 case a_f_FEH: return a_m_FEH;
633 break; 494 case a_f_QAF: return a_m_QAF;
634 case a_f_KHAH: 495 case a_f_KAF: return a_m_KAF;
635 tempc = a_m_KHAH; 496 case a_f_LAM: return a_m_LAM;
636 break; 497 case a_f_MEEM: return a_m_MEEM;
637 case a_f_SEEN: 498 case a_f_NOON: return a_m_NOON;
638 tempc = a_m_SEEN; 499 case a_f_HEH: return a_m_HEH;
639 break; 500 case a_f_YEH: return a_m_YEH;
640 case a_f_SHEEN: 501
641 tempc = a_m_SHEEN; 502 /* NOTE: these encodings are multi-positional, no ?
642 break; 503 * case a_f_LAM_ALEF_MADDA_ABOVE:
643 case a_f_SAD: 504 * case a_f_LAM_ALEF_HAMZA_ABOVE:
644 tempc = a_m_SAD; 505 * case a_f_LAM_ALEF_HAMZA_BELOW:
645 break; 506 * case a_f_LAM_ALEF:
646 case a_f_DAD: 507 */
647 tempc = a_m_DAD; 508 }
648 break; 509 return 0;
649 case a_f_TAH:
650 tempc = a_m_TAH;
651 break;
652 case a_f_ZAH:
653 tempc = a_m_ZAH;
654 break;
655 case a_f_AIN:
656 tempc = a_m_AIN;
657 break;
658 case a_f_GHAIN:
659 tempc = a_m_GHAIN;
660 break;
661 case a_f_FEH:
662 tempc = a_m_FEH;
663 break;
664 case a_f_QAF:
665 tempc = a_m_QAF;
666 break;
667 case a_f_KAF:
668 tempc = a_m_KAF;
669 break;
670 case a_f_LAM:
671 tempc = a_m_LAM;
672 break;
673 case a_f_MEEM:
674 tempc = a_m_MEEM;
675 break;
676 case a_f_NOON:
677 tempc = a_m_NOON;
678 break;
679 case a_f_HEH:
680 tempc = a_m_HEH;
681 break;
682 case a_f_YEH:
683 tempc = a_m_YEH;
684 break;
685 /* NOTE: these encodings are multi-positional, no ?
686 case a_f_LAM_ALEF_MADDA_ABOVE:
687 case a_f_LAM_ALEF_HAMZA_ABOVE:
688 case a_f_LAM_ALEF_HAMZA_BELOW:
689 case a_f_LAM_ALEF:
690 */
691 default:
692 tempc = 0;
693 }
694
695 return tempc;
696 } 510 }
697 511
698 512
699 /* 513 /*
700 * Change shape - from Combination (2 char) to an Isolated 514 * Change shape - from Combination (2 char) to an Isolated
701 */ 515 */
702 static int 516 static int
703 chg_c_laa2i(int hid_c) 517 chg_c_laa2i(int hid_c)
704 { 518 {
705 int tempc;
706
707 switch (hid_c) 519 switch (hid_c)
708 { 520 {
709 case a_ALEF_MADDA: 521 case a_ALEF_MADDA: return a_s_LAM_ALEF_MADDA_ABOVE;
710 tempc = a_s_LAM_ALEF_MADDA_ABOVE; 522 case a_ALEF_HAMZA_ABOVE: return a_s_LAM_ALEF_HAMZA_ABOVE;
711 break; 523 case a_ALEF_HAMZA_BELOW: return a_s_LAM_ALEF_HAMZA_BELOW;
712 case a_ALEF_HAMZA_ABOVE: 524 case a_ALEF: return a_s_LAM_ALEF;
713 tempc = a_s_LAM_ALEF_HAMZA_ABOVE; 525 }
714 break; 526 return 0;
715 case a_ALEF_HAMZA_BELOW:
716 tempc = a_s_LAM_ALEF_HAMZA_BELOW;
717 break;
718 case a_ALEF:
719 tempc = a_s_LAM_ALEF;
720 break;
721 default:
722 tempc = 0;
723 }
724
725 return tempc;
726 } 527 }
727 528
728 529
729 /* 530 /*
730 * Change shape - from Combination-Isolated to Final 531 * Change shape - from Combination-Isolated to Final
731 */ 532 */
732 static int 533 static int
733 chg_c_laa2f(int hid_c) 534 chg_c_laa2f(int hid_c)
734 { 535 {
735 int tempc;
736
737 switch (hid_c) 536 switch (hid_c)
738 { 537 {
739 case a_ALEF_MADDA: 538 case a_ALEF_MADDA: return a_f_LAM_ALEF_MADDA_ABOVE;
740 tempc = a_f_LAM_ALEF_MADDA_ABOVE; 539 case a_ALEF_HAMZA_ABOVE: return a_f_LAM_ALEF_HAMZA_ABOVE;
741 break; 540 case a_ALEF_HAMZA_BELOW: return a_f_LAM_ALEF_HAMZA_BELOW;
742 case a_ALEF_HAMZA_ABOVE: 541 case a_ALEF: return a_f_LAM_ALEF;
743 tempc = a_f_LAM_ALEF_HAMZA_ABOVE; 542 }
744 break; 543 return 0;
745 case a_ALEF_HAMZA_BELOW:
746 tempc = a_f_LAM_ALEF_HAMZA_BELOW;
747 break;
748 case a_ALEF:
749 tempc = a_f_LAM_ALEF;
750 break;
751 default:
752 tempc = 0;
753 }
754
755 return tempc;
756 } 544 }
757 545
758 /* 546 /*
759 * Do "half-shaping" on character "c". Return zero if no shaping. 547 * Do "half-shaping" on character "c". Return zero if no shaping.
760 */ 548 */