Mercurial > vim
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 */ |