mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
Use Cow<str> to avoid unnecessary memory reallocations
This commit is contained in:
parent
b540d103ab
commit
70c497ef3d
3 changed files with 835 additions and 821 deletions
|
|
@ -1,822 +1,5 @@
|
|||
#[inline(always)]
|
||||
fn transliteration(c: &char) -> String {
|
||||
let c_val = *c as usize;
|
||||
if c_val < 192 {
|
||||
c.to_string()
|
||||
} else if c_val < 688 {
|
||||
// NOTE: This is safe since we hard coded the array as const and know its bounds
|
||||
unsafe { TRANSLITERATE_0.get_unchecked(c_val - 192usize).to_string() }
|
||||
} else if c_val > 7683 && c_val < 7930 {
|
||||
// NOTE: This is safe since we hard coded the array as const and know its bounds
|
||||
unsafe { TRANSLITERATE_1.get_unchecked(c_val - 7684usize).to_string() }
|
||||
} else if c_val > 64256 && c_val < 64259 {
|
||||
// NOTE: This is safe since we hard coded the array as const and know its bounds
|
||||
unsafe { TRANSLITERATE_2.get_unchecked(c_val - 64257usize).to_string() }
|
||||
} else {
|
||||
c.to_string()
|
||||
}
|
||||
}
|
||||
mod table;
|
||||
mod traits;
|
||||
|
||||
pub trait Transliterator {
|
||||
fn transliterate(&self) -> String;
|
||||
}
|
||||
|
||||
impl Transliterator for &[u8] {
|
||||
fn transliterate(&self) -> String {
|
||||
match std::str::from_utf8(*self) {
|
||||
Ok(ts) => ts.chars().fold(String::new(), |acc, s| acc + &transliteration(&s)),
|
||||
// If the [u8] fails to convert to a utf8 string
|
||||
Err(_) => "invalid".to_string(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// this array holds char values 192-687
|
||||
const TRANSLITERATE_0: [&'static str; 496] = [
|
||||
"A", // À 192
|
||||
"A", // Á 193
|
||||
"A", // Â 194
|
||||
"A", // Ã 195
|
||||
"A", // Ä 196
|
||||
"A", // Å 197
|
||||
"AE", // Æ 198
|
||||
"C", // Ç 199
|
||||
"E", // È 200
|
||||
"E", // É 201
|
||||
"E", // Ê 202
|
||||
"E", // Ë 203
|
||||
"I", // Ì 204
|
||||
"I", // Í 205
|
||||
"I", // Î 206
|
||||
"I", // Ï 207
|
||||
"D", // Ð 208
|
||||
"N", // Ñ 209
|
||||
"O", // Ò 210
|
||||
"O", // Ó 211
|
||||
"O", // Ô 212
|
||||
"O", // Õ 213
|
||||
"O", // Ö 214
|
||||
"×", // × 215
|
||||
"O", // Ø 216
|
||||
"U", // Ù 217
|
||||
"U", // Ú 218
|
||||
"U", // Û 219
|
||||
"U", // Ü 220
|
||||
"Y", // Ý 221
|
||||
"T", // Þ 222
|
||||
"ss", // ß 223
|
||||
"a", // à 224
|
||||
"a", // á 225
|
||||
"a", // â 226
|
||||
"a", // ã 227
|
||||
"a", // ä 228
|
||||
"a", // å 229
|
||||
"ae", // æ 230
|
||||
"c", // ç 231
|
||||
"e", // è 232
|
||||
"e", // é 233
|
||||
"e", // ê 234
|
||||
"e", // ë 235
|
||||
"i", // ì 236
|
||||
"i", // í 237
|
||||
"i", // î 238
|
||||
"i", // ï 239
|
||||
"d", // ð 240
|
||||
"n", // ñ 241
|
||||
"o", // ò 242
|
||||
"o", // ó 243
|
||||
"o", // ô 244
|
||||
"o", // õ 245
|
||||
"o", // ö 246
|
||||
"÷", // ÷ 247
|
||||
"o", // ø 248
|
||||
"u", // ù 249
|
||||
"u", // ú 250
|
||||
"u", // û 251
|
||||
"u", // ü 252
|
||||
"y", // ý 253
|
||||
"t", // þ 254
|
||||
"y", // ÿ 255
|
||||
"A", // Ā 256
|
||||
"a", // ā 257
|
||||
"A", // Ă 258
|
||||
"a", // ă 259
|
||||
"A", // Ą 260
|
||||
"a", // ą 261
|
||||
"C", // Ć 262
|
||||
"c", // ć 263
|
||||
"C", // Ĉ 264
|
||||
"c", // ĉ 265
|
||||
"C", // Ċ 266
|
||||
"c", // ċ 267
|
||||
"C", // Č 268
|
||||
"c", // č 269
|
||||
"D", // Ď 270
|
||||
"d", // ď 271
|
||||
"D", // Đ 272
|
||||
"d", // đ 273
|
||||
"E", // Ē 274
|
||||
"e", // ē 275
|
||||
"E", // Ĕ 276
|
||||
"e", // ĕ 277
|
||||
"E", // Ė 278
|
||||
"e", // ė 279
|
||||
"E", // Ę 280
|
||||
"e", // ę 281
|
||||
"E", // Ě 282
|
||||
"e", // ě 283
|
||||
"G", // Ĝ 284
|
||||
"g", // ĝ 285
|
||||
"G", // Ğ 286
|
||||
"g", // ğ 287
|
||||
"G", // Ġ 288
|
||||
"g", // ġ 289
|
||||
"G", // Ģ 290
|
||||
"g", // ģ 291
|
||||
"H", // Ĥ 292
|
||||
"h", // ĥ 293
|
||||
"H", // Ħ 294
|
||||
"h", // ħ 295
|
||||
"I", // Ĩ 296
|
||||
"i", // ĩ 297
|
||||
"I", // Ī 298
|
||||
"i", // ī 299
|
||||
"I", // Ĭ 300
|
||||
"i", // ĭ 301
|
||||
"I", // Į 302
|
||||
"i", // į 303
|
||||
"I", // İ 304
|
||||
"i", // ı 305
|
||||
"IJ", // IJ 306
|
||||
"ij", // ij 307
|
||||
"J", // Ĵ 308
|
||||
"j", // ĵ 309
|
||||
"K", // Ķ 310
|
||||
"k", // ķ 311
|
||||
"k", // ĸ 312
|
||||
"L", // Ĺ 313
|
||||
"l", // ĺ 314
|
||||
"L", // Ļ 315
|
||||
"l", // ļ 316
|
||||
"L", // Ľ 317
|
||||
"l", // ľ 318
|
||||
"L", // Ŀ 319
|
||||
"l", // ŀ 320
|
||||
"L", // Ł 321
|
||||
"l", // ł 322
|
||||
"N", // Ń 323
|
||||
"n", // ń 324
|
||||
"N", // Ņ 325
|
||||
"n", // ņ 326
|
||||
"N", // Ň 327
|
||||
"n", // ň 328
|
||||
"n", // ʼn 329
|
||||
"N", // Ŋ 330
|
||||
"n", // ŋ 331
|
||||
"O", // Ō 332
|
||||
"o", // ō 333
|
||||
"O", // Ŏ 334
|
||||
"o", // ŏ 335
|
||||
"O", // Ő 336
|
||||
"o", // ő 337
|
||||
"OE", // Œ 338
|
||||
"oe", // œ 339
|
||||
"R", // Ŕ 340
|
||||
"r", // ŕ 341
|
||||
"R", // Ŗ 342
|
||||
"r", // ŗ 343
|
||||
"R", // Ř 344
|
||||
"r", // ř 345
|
||||
"S", // Ś 346
|
||||
"s", // ś 347
|
||||
"S", // Ŝ 348
|
||||
"s", // ŝ 349
|
||||
"S", // Ş 350
|
||||
"s", // ş 351
|
||||
"S", // Š 352
|
||||
"s", // š 353
|
||||
"T", // Ţ 354
|
||||
"t", // ţ 355
|
||||
"T", // Ť 356
|
||||
"t", // ť 357
|
||||
"T", // Ŧ 358
|
||||
"t", // ŧ 359
|
||||
"U", // Ũ 360
|
||||
"u", // ũ 361
|
||||
"U", // Ū 362
|
||||
"u", // ū 363
|
||||
"U", // Ŭ 364
|
||||
"u", // ŭ 365
|
||||
"U", // Ů 366
|
||||
"u", // ů 367
|
||||
"U", // Ű 368
|
||||
"u", // ű 369
|
||||
"U", // Ų 370
|
||||
"u", // ų 371
|
||||
"W", // Ŵ 372
|
||||
"w", // ŵ 373
|
||||
"Y", // Ŷ 374
|
||||
"y", // ŷ 375
|
||||
"Y", // Ÿ 376
|
||||
"Z", // Ź 377
|
||||
"z", // ź 378
|
||||
"Z", // Ż 379
|
||||
"z", // ż 380
|
||||
"Z", // Ž 381
|
||||
"z", // ž 382
|
||||
"s", // ſ 383
|
||||
"ƀ", // ƀ 384
|
||||
"B", // Ɓ 385
|
||||
"Ƃ", // Ƃ 386
|
||||
"ƃ", // ƃ 387
|
||||
"Ƅ", // Ƅ 388
|
||||
"ƅ", // ƅ 389
|
||||
"O", // Ɔ 390
|
||||
"Ƈ", // Ƈ 391
|
||||
"ƈ", // ƈ 392
|
||||
"Ɖ", // Ɖ 393
|
||||
"D", // Ɗ 394
|
||||
"Ƌ", // Ƌ 395
|
||||
"ƌ", // ƌ 396
|
||||
"ƍ", // ƍ 397
|
||||
"Ǝ", // Ǝ 398
|
||||
"E", // Ə 399
|
||||
"E", // Ɛ 400
|
||||
"F", // Ƒ 401
|
||||
"f", // ƒ 402
|
||||
"Ɠ", // Ɠ 403
|
||||
"Ɣ", // Ɣ 404
|
||||
"ƕ", // ƕ 405
|
||||
"Ɩ", // Ɩ 406
|
||||
"Ɨ", // Ɨ 407
|
||||
"K", // Ƙ 408
|
||||
"k", // ƙ 409
|
||||
"l", // ƚ 410
|
||||
"l", // ƛ 411
|
||||
"Ɯ", // Ɯ 412
|
||||
"N", // Ɲ 413
|
||||
"ƞ", // ƞ 414
|
||||
"O", // Ɵ 415
|
||||
"O", // Ơ 416
|
||||
"o", // ơ 417
|
||||
"Ƣ", // Ƣ 418
|
||||
"ƣ", // ƣ 419
|
||||
"Ƥ", // Ƥ 420
|
||||
"ƥ", // ƥ 421
|
||||
"Ʀ", // Ʀ 422
|
||||
"Ƨ", // Ƨ 423
|
||||
"ƨ", // ƨ 424
|
||||
"Ʃ", // Ʃ 425
|
||||
"ƪ", // ƪ 426
|
||||
"ƫ", // ƫ 427
|
||||
"Ƭ", // Ƭ 428
|
||||
"ƭ", // ƭ 429
|
||||
"Ʈ", // Ʈ 430
|
||||
"U", // Ư 431
|
||||
"u", // ư 432
|
||||
"Ʊ", // Ʊ 433
|
||||
"Ʋ", // Ʋ 434
|
||||
"Y", // Ƴ 435
|
||||
"y", // ƴ 436
|
||||
"Z", // Ƶ 437
|
||||
"z", // ƶ 438
|
||||
"Ʒ", // Ʒ 439
|
||||
"Ƹ", // Ƹ 440
|
||||
"ƹ", // ƹ 441
|
||||
"ƺ", // ƺ 442
|
||||
"ƻ", // ƻ 443
|
||||
"Ƽ", // Ƽ 444
|
||||
"ƽ", // ƽ 445
|
||||
"ƾ", // ƾ 446
|
||||
"ƿ", // ƿ 447
|
||||
"ǀ", // ǀ 448
|
||||
"ǁ", // ǁ 449
|
||||
"ǂ", // ǂ 450
|
||||
"ǃ", // ǃ 451
|
||||
"DZ", // DŽ 452
|
||||
"Dz", // Dž 453
|
||||
"dz", // dž 454
|
||||
"LJ", // LJ 455
|
||||
"Lj", // Lj 456
|
||||
"lj", // lj 457
|
||||
"NJ", // NJ 458
|
||||
"Nj", // Nj 459
|
||||
"nj", // nj 460
|
||||
"A", // Ǎ 461
|
||||
"a", // ǎ 462
|
||||
"I", // Ǐ 463
|
||||
"i", // ǐ 464
|
||||
"O", // Ǒ 465
|
||||
"o", // ǒ 466
|
||||
"U", // Ǔ 467
|
||||
"u", // ǔ 468
|
||||
"U", // Ǖ 469
|
||||
"u", // ǖ 470
|
||||
"U", // Ǘ 471
|
||||
"u", // ǘ 472
|
||||
"U", // Ǚ 473
|
||||
"u", // ǚ 474
|
||||
"U", // Ǜ 475
|
||||
"u", // ǜ 476
|
||||
"ǝ", // ǝ 477
|
||||
"Ǟ", // Ǟ 478
|
||||
"ǟ", // ǟ 479
|
||||
"Ǡ", // Ǡ 480
|
||||
"ǡ", // ǡ 481
|
||||
"Ǣ", // Ǣ 482
|
||||
"ǣ", // ǣ 483
|
||||
"Ǥ", // Ǥ 484
|
||||
"ǥ", // ǥ 485
|
||||
"G", // Ǧ 486
|
||||
"g", // ǧ 487
|
||||
"Ǩ", // Ǩ 488
|
||||
"ǩ", // ǩ 489
|
||||
"O", // Ǫ 490
|
||||
"o", // ǫ 491
|
||||
"Ǭ", // Ǭ 492
|
||||
"ǭ", // ǭ 493
|
||||
"Ǯ", // Ǯ 494
|
||||
"e", // ǯ 495
|
||||
"j", // ǰ 496
|
||||
"DZ", // DZ 497
|
||||
"Dz", // Dz 498
|
||||
"dz", // dz 499
|
||||
"G", // Ǵ 500
|
||||
"g", // ǵ 501
|
||||
"Ƕ", // Ƕ 502
|
||||
"Ƿ", // Ƿ 503
|
||||
"N", // Ǹ 504
|
||||
"n", // ǹ 505
|
||||
"A", // Ǻ 506
|
||||
"a", // ǻ 507
|
||||
"AE", // Ǽ 508
|
||||
"ae", // ǽ 509
|
||||
"O", // Ǿ 510
|
||||
"o", // ǿ 511
|
||||
"Ȁ", // Ȁ 512
|
||||
"ȁ", // ȁ 513
|
||||
"Ȃ", // Ȃ 514
|
||||
"ȃ", // ȃ 515
|
||||
"Ȅ", // Ȅ 516
|
||||
"ȅ", // ȅ 517
|
||||
"Ȇ", // Ȇ 518
|
||||
"ȇ", // ȇ 519
|
||||
"Ȉ", // Ȉ 520
|
||||
"ȉ", // ȉ 521
|
||||
"Ȋ", // Ȋ 522
|
||||
"ȋ", // ȋ 523
|
||||
"Ȍ", // Ȍ 524
|
||||
"ȍ", // ȍ 525
|
||||
"Ȏ", // Ȏ 526
|
||||
"ȏ", // ȏ 527
|
||||
"Ȑ", // Ȑ 528
|
||||
"ȑ", // ȑ 529
|
||||
"Ȓ", // Ȓ 530
|
||||
"ȓ", // ȓ 531
|
||||
"Ȕ", // Ȕ 532
|
||||
"ȕ", // ȕ 533
|
||||
"Ȗ", // Ȗ 534
|
||||
"ȗ", // ȗ 535
|
||||
"S", // Ș 536
|
||||
"s", // ș 537
|
||||
"T", // Ț 538
|
||||
"t", // ț 539
|
||||
"Ȝ", // Ȝ 540
|
||||
"ȝ", // ȝ 541
|
||||
"Ȟ", // Ȟ 542
|
||||
"ȟ", // ȟ 543
|
||||
"Ƞ", // Ƞ 544
|
||||
"ȡ", // ȡ 545
|
||||
"Ȣ", // Ȣ 546
|
||||
"ȣ", // ȣ 547
|
||||
"Ȥ", // Ȥ 548
|
||||
"ȥ", // ȥ 549
|
||||
"Ȧ", // Ȧ 550
|
||||
"ȧ", // ȧ 551
|
||||
"Ȩ", // Ȩ 552
|
||||
"ȩ", // ȩ 553
|
||||
"Ȫ", // Ȫ 554
|
||||
"ȫ", // ȫ 555
|
||||
"Ȭ", // Ȭ 556
|
||||
"ȭ", // ȭ 557
|
||||
"Ȯ", // Ȯ 558
|
||||
"ȯ", // ȯ 559
|
||||
"Ȱ", // Ȱ 560
|
||||
"ȱ", // ȱ 561
|
||||
"Y", // Ȳ 562
|
||||
"y", // ȳ 563
|
||||
"ȴ", // ȴ 564
|
||||
"ȵ", // ȵ 565
|
||||
"ȶ", // ȶ 566
|
||||
"j", // ȷ 567
|
||||
"ȸ", // ȸ 568
|
||||
"ȹ", // ȹ 569
|
||||
"Ⱥ", // Ⱥ 570
|
||||
"Ȼ", // Ȼ 571
|
||||
"ȼ", // ȼ 572
|
||||
"L", // Ƚ 573
|
||||
"Ⱦ", // Ⱦ 574
|
||||
"ȿ", // ȿ 575
|
||||
"ɀ", // ɀ 576
|
||||
"Ɂ", // Ɂ 577
|
||||
"ɂ", // ɂ 578
|
||||
"Ƀ", // Ƀ 579
|
||||
"Ʉ", // Ʉ 580
|
||||
"Ʌ", // Ʌ 581
|
||||
"Ɇ", // Ɇ 582
|
||||
"ɇ", // ɇ 583
|
||||
"Ɉ", // Ɉ 584
|
||||
"ɉ", // ɉ 585
|
||||
"Ɋ", // Ɋ 586
|
||||
"ɋ", // ɋ 587
|
||||
"Ɍ", // Ɍ 588
|
||||
"ɍ", // ɍ 589
|
||||
"Ɏ", // Ɏ 590
|
||||
"ɏ", // ɏ 591
|
||||
"a", // ɐ 592
|
||||
"a", // ɑ 593
|
||||
"a", // ɒ 594
|
||||
"b", // ɓ 595
|
||||
"o", // ɔ 596
|
||||
"c", // ɕ 597
|
||||
"d", // ɖ 598
|
||||
"d", // ɗ 599
|
||||
"e", // ɘ 600
|
||||
"e", // ə 601
|
||||
"e", // ɚ 602
|
||||
"o", // ɛ 603
|
||||
"e", // ɜ 604
|
||||
"e", // ɝ 605
|
||||
"e", // ɞ 606
|
||||
"j", // ɟ 607
|
||||
"g", // ɠ 608
|
||||
"g", // ɡ 609
|
||||
"ɢ", // ɢ 610
|
||||
"g", // ɣ 611
|
||||
"ɤ", // ɤ 612
|
||||
"h", // ɥ 613
|
||||
"h", // ɦ 614
|
||||
"h", // ɧ 615
|
||||
"i", // ɨ 616
|
||||
"i", // ɩ 617
|
||||
"ɪ", // ɪ 618
|
||||
"l", // ɫ 619
|
||||
"l", // ɬ 620
|
||||
"l", // ɭ 621
|
||||
"le", // ɮ 622
|
||||
"m", // ɯ 623
|
||||
"m", // ɰ 624
|
||||
"m", // ɱ 625
|
||||
"n", // ɲ 626
|
||||
"n", // ɳ 627
|
||||
"ɴ", // ɴ 628
|
||||
"o", // ɵ 629
|
||||
"OE", // ɶ 630
|
||||
"ɷ", // ɷ 631
|
||||
"p", // ɸ 632
|
||||
"r", // ɹ 633
|
||||
"r", // ɺ 634
|
||||
"r", // ɻ 635
|
||||
"r", // ɼ 636
|
||||
"r", // ɽ 637
|
||||
"r", // ɾ 638
|
||||
"r", // ɿ 639
|
||||
"ʀ", // ʀ 640
|
||||
"R", // ʁ 641
|
||||
"s", // ʂ 642
|
||||
"s", // ʃ 643
|
||||
"j", // ʄ 644
|
||||
"s", // ʅ 645
|
||||
"s", // ʆ 646
|
||||
"t", // ʇ 647
|
||||
"t", // ʈ 648
|
||||
"u", // ʉ 649
|
||||
"u", // ʊ 650
|
||||
"v", // ʋ 651
|
||||
"v", // ʌ 652
|
||||
"w", // ʍ 653
|
||||
"y", // ʎ 654
|
||||
"ʏ", // ʏ 655
|
||||
"z", // ʐ 656
|
||||
"z", // ʑ 657
|
||||
"e", // ʒ 658
|
||||
"e", // ʓ 659
|
||||
"ʔ", // ʔ 660
|
||||
"ʕ", // ʕ 661
|
||||
"ʖ", // ʖ 662
|
||||
"C", // ʗ 663
|
||||
"o", // ʘ 664
|
||||
"ʙ", // ʙ 665
|
||||
"e", // ʚ 666
|
||||
"G", // ʛ 667
|
||||
"ʜ", // ʜ 668
|
||||
"j", // ʝ 669
|
||||
"k", // ʞ 670
|
||||
"ʟ", // ʟ 671
|
||||
"q", // ʠ 672
|
||||
"ʡ", // ʡ 673
|
||||
"ʢ", // ʢ 674
|
||||
"dz", // ʣ 675
|
||||
"de", // ʤ 676
|
||||
"dz", // ʥ 677
|
||||
"ts", // ʦ 678
|
||||
"ts", // ʧ 679
|
||||
"tc", // ʨ 680
|
||||
"fn", // ʩ 681
|
||||
"ls", // ʪ 682
|
||||
"lz", // ʫ 683
|
||||
"W", // ʬ 684
|
||||
"ʭ", // ʭ 685
|
||||
"h", // ʮ 686
|
||||
"h", // ʯ 687
|
||||
];
|
||||
|
||||
// this array holds char values 7684-7929
|
||||
const TRANSLITERATE_1: [&'static str; 246] = [
|
||||
"B", // Ḅ 7684
|
||||
"b", // ḅ 7685
|
||||
"Ḇ", // Ḇ 7686
|
||||
"ḇ", // ḇ 7687
|
||||
"Ḉ", // Ḉ 7688
|
||||
"ḉ", // ḉ 7689
|
||||
"Ḋ", // Ḋ 7690
|
||||
"ḋ", // ḋ 7691
|
||||
"D", // Ḍ 7692
|
||||
"d", // ḍ 7693
|
||||
"D", // Ḏ 7694
|
||||
"d", // ḏ 7695
|
||||
"Ḑ", // Ḑ 7696
|
||||
"ḑ", // ḑ 7697
|
||||
"D", // Ḓ 7698
|
||||
"d", // ḓ 7699
|
||||
"Ḕ", // Ḕ 7700
|
||||
"ḕ", // ḕ 7701
|
||||
"Ḗ", // Ḗ 7702
|
||||
"ḗ", // ḗ 7703
|
||||
"Ḙ", // Ḙ 7704
|
||||
"ḙ", // ḙ 7705
|
||||
"Ḛ", // Ḛ 7706
|
||||
"ḛ", // ḛ 7707
|
||||
"Ḝ", // Ḝ 7708
|
||||
"ḝ", // ḝ 7709
|
||||
"Ḟ", // Ḟ 7710
|
||||
"ḟ", // ḟ 7711
|
||||
"G", // Ḡ 7712
|
||||
"g", // ḡ 7713
|
||||
"Ḣ", // Ḣ 7714
|
||||
"ḣ", // ḣ 7715
|
||||
"H", // Ḥ 7716
|
||||
"h", // ḥ 7717
|
||||
"Ḧ", // Ḧ 7718
|
||||
"ḧ", // ḧ 7719
|
||||
"Ḩ", // Ḩ 7720
|
||||
"ḩ", // ḩ 7721
|
||||
"H", // Ḫ 7722
|
||||
"h", // ḫ 7723
|
||||
"Ḭ", // Ḭ 7724
|
||||
"ḭ", // ḭ 7725
|
||||
"Ḯ", // Ḯ 7726
|
||||
"ḯ", // ḯ 7727
|
||||
"Ḱ", // Ḱ 7728
|
||||
"ḱ", // ḱ 7729
|
||||
"K", // Ḳ 7730
|
||||
"k", // ḳ 7731
|
||||
"K", // Ḵ 7732
|
||||
"k", // ḵ 7733
|
||||
"L", // Ḷ 7734
|
||||
"l", // ḷ 7735
|
||||
"L", // Ḹ 7736
|
||||
"l", // ḹ 7737
|
||||
"L", // Ḻ 7738
|
||||
"l", // ḻ 7739
|
||||
"L", // Ḽ 7740
|
||||
"l", // ḽ 7741
|
||||
"M", // Ḿ 7742
|
||||
"m", // ḿ 7743
|
||||
"M", // Ṁ 7744
|
||||
"m", // ṁ 7745
|
||||
"M", // Ṃ 7746
|
||||
"m", // ṃ 7747
|
||||
"N", // Ṅ 7748
|
||||
"n", // ṅ 7749
|
||||
"N", // Ṇ 7750
|
||||
"n", // ṇ 7751
|
||||
"N", // Ṉ 7752
|
||||
"n", // ṉ 7753
|
||||
"N", // Ṋ 7754
|
||||
"n", // ṋ 7755
|
||||
"Ṍ", // Ṍ 7756
|
||||
"ṍ", // ṍ 7757
|
||||
"Ṏ", // Ṏ 7758
|
||||
"ṏ", // ṏ 7759
|
||||
"Ṑ", // Ṑ 7760
|
||||
"ṑ", // ṑ 7761
|
||||
"Ṓ", // Ṓ 7762
|
||||
"ṓ", // ṓ 7763
|
||||
"Ṕ", // Ṕ 7764
|
||||
"ṕ", // ṕ 7765
|
||||
"Ṗ", // Ṗ 7766
|
||||
"ṗ", // ṗ 7767
|
||||
"R", // Ṙ 7768
|
||||
"r", // ṙ 7769
|
||||
"R", // Ṛ 7770
|
||||
"r", // ṛ 7771
|
||||
"R", // Ṝ 7772
|
||||
"r", // ṝ 7773
|
||||
"R", // Ṟ 7774
|
||||
"r", // ṟ 7775
|
||||
"S", // Ṡ 7776
|
||||
"s", // ṡ 7777
|
||||
"S", // Ṣ 7778
|
||||
"s", // ṣ 7779
|
||||
"Ṥ", // Ṥ 7780
|
||||
"ṥ", // ṥ 7781
|
||||
"Ṧ", // Ṧ 7782
|
||||
"ṧ", // ṧ 7783
|
||||
"Ṩ", // Ṩ 7784
|
||||
"ṩ", // ṩ 7785
|
||||
"Ṫ", // Ṫ 7786
|
||||
"ṫ", // ṫ 7787
|
||||
"T", // Ṭ 7788
|
||||
"t", // ṭ 7789
|
||||
"T", // Ṯ 7790
|
||||
"t", // ṯ 7791
|
||||
"T", // Ṱ 7792
|
||||
"t", // ṱ 7793
|
||||
"Ṳ", // Ṳ 7794
|
||||
"ṳ", // ṳ 7795
|
||||
"Ṵ", // Ṵ 7796
|
||||
"ṵ", // ṵ 7797
|
||||
"Ṷ", // Ṷ 7798
|
||||
"ṷ", // ṷ 7799
|
||||
"Ṹ", // Ṹ 7800
|
||||
"ṹ", // ṹ 7801
|
||||
"Ṻ", // Ṻ 7802
|
||||
"ṻ", // ṻ 7803
|
||||
"Ṽ", // Ṽ 7804
|
||||
"ṽ", // ṽ 7805
|
||||
"Ṿ", // Ṿ 7806
|
||||
"ṿ", // ṿ 7807
|
||||
"W", // Ẁ 7808
|
||||
"w", // ẁ 7809
|
||||
"W", // Ẃ 7810
|
||||
"w", // ẃ 7811
|
||||
"W", // Ẅ 7812
|
||||
"w", // ẅ 7813
|
||||
"Ẇ", // Ẇ 7814
|
||||
"ẇ", // ẇ 7815
|
||||
"Ẉ", // Ẉ 7816
|
||||
"ẉ", // ẉ 7817
|
||||
"Ẋ", // Ẋ 7818
|
||||
"ẋ", // ẋ 7819
|
||||
"Ẍ", // Ẍ 7820
|
||||
"ẍ", // ẍ 7821
|
||||
"Y", // Ẏ 7822
|
||||
"y", // ẏ 7823
|
||||
"Ẑ", // Ẑ 7824
|
||||
"ẑ", // ẑ 7825
|
||||
"Z", // Ẓ 7826
|
||||
"z", // ẓ 7827
|
||||
"Z", // Ẕ 7828
|
||||
"z", // ẕ 7829
|
||||
"h", // ẖ 7830
|
||||
"t", // ẗ 7831
|
||||
"ẘ", // ẘ 7832
|
||||
"ẙ", // ẙ 7833
|
||||
"ẚ", // ẚ 7834
|
||||
"ẛ", // ẛ 7835
|
||||
"ẜ", // ẜ 7836
|
||||
"ẝ", // ẝ 7837
|
||||
"SS", // ẞ 7838
|
||||
"ẟ", // ẟ 7839
|
||||
"A", // Ạ 7840
|
||||
"a", // ạ 7841
|
||||
"A", // Ả 7842
|
||||
"a", // ả 7843
|
||||
"A", // Ấ 7844
|
||||
"a", // ấ 7845
|
||||
"A", // Ầ 7846
|
||||
"a", // ầ 7847
|
||||
"A", // Ẩ 7848
|
||||
"a", // ẩ 7849
|
||||
"A", // Ẫ 7850
|
||||
"a", // ẫ 7851
|
||||
"A", // Ậ 7852
|
||||
"a", // ậ 7853
|
||||
"A", // Ắ 7854
|
||||
"a", // ắ 7855
|
||||
"A", // Ằ 7856
|
||||
"a", // ằ 7857
|
||||
"A", // Ẳ 7858
|
||||
"a", // ẳ 7859
|
||||
"A", // Ẵ 7860
|
||||
"a", // ẵ 7861
|
||||
"A", // Ặ 7862
|
||||
"a", // ặ 7863
|
||||
"E", // Ẹ 7864
|
||||
"e", // ẹ 7865
|
||||
"E", // Ẻ 7866
|
||||
"e", // ẻ 7867
|
||||
"E", // Ẽ 7868
|
||||
"e", // ẽ 7869
|
||||
"E", // Ế 7870
|
||||
"e", // ế 7871
|
||||
"E", // Ề 7872
|
||||
"e", // ề 7873
|
||||
"E", // Ể 7874
|
||||
"e", // ể 7875
|
||||
"E", // Ễ 7876
|
||||
"e", // ễ 7877
|
||||
"E", // Ệ 7878
|
||||
"e", // ệ 7879
|
||||
"I", // Ỉ 7880
|
||||
"i", // ỉ 7881
|
||||
"I", // Ị 7882
|
||||
"i", // ị 7883
|
||||
"O", // Ọ 7884
|
||||
"o", // ọ 7885
|
||||
"O", // Ỏ 7886
|
||||
"o", // ỏ 7887
|
||||
"O", // Ố 7888
|
||||
"o", // ố 7889
|
||||
"O", // Ồ 7890
|
||||
"o", // ồ 7891
|
||||
"O", // Ổ 7892
|
||||
"o", // ổ 7893
|
||||
"O", // Ỗ 7894
|
||||
"o", // ỗ 7895
|
||||
"O", // Ộ 7896
|
||||
"o", // ộ 7897
|
||||
"O", // Ớ 7898
|
||||
"o", // ớ 7899
|
||||
"O", // Ờ 7900
|
||||
"o", // ờ 7901
|
||||
"O", // Ở 7902
|
||||
"o", // ở 7903
|
||||
"O", // Ỡ 7904
|
||||
"o", // ỡ 7905
|
||||
"O", // Ợ 7906
|
||||
"o", // ợ 7907
|
||||
"U", // Ụ 7908
|
||||
"u", // ụ 7909
|
||||
"U", // Ủ 7910
|
||||
"u", // ủ 7911
|
||||
"U", // Ứ 7912
|
||||
"u", // ứ 7913
|
||||
"U", // Ừ 7914
|
||||
"u", // ừ 7915
|
||||
"U", // Ử 7916
|
||||
"u", // ử 7917
|
||||
"U", // Ữ 7918
|
||||
"u", // ữ 7919
|
||||
"U", // Ự 7920
|
||||
"u", // ự 7921
|
||||
"Y", // Ỳ 7922
|
||||
"y", // ỳ 7923
|
||||
"Y", // Ỵ 7924
|
||||
"y", // ỵ 7925
|
||||
"Y", // Ỷ 7926
|
||||
"y", // ỷ 7927
|
||||
"Y", // Ỹ 7928
|
||||
"y", // ỹ 7929
|
||||
];
|
||||
|
||||
// this array holds char values 64257-64258
|
||||
const TRANSLITERATE_2: [&'static str; 2] = [
|
||||
"fi", // fi 64257
|
||||
"fl", // fl 64258
|
||||
];
|
||||
|
||||
#[cfg(test)]
|
||||
mod transliteration_tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_transliterate() {
|
||||
assert_eq!("Æcœ".as_bytes().transliterate(), "AEcoe".to_string());
|
||||
assert_eq!(
|
||||
"ěřůøĉĝĥĵŝŭèùÿėįųāēīūļķņģőűëïąćęłńśźżõșțčďĺľňŕšťýžéíñóúüåäöçîşûğăâđêôơưáàãảạ"
|
||||
.as_bytes()
|
||||
.transliterate(),
|
||||
"eruocghjsueuyeiuaeiulkngoueiacelnszzostcdllnrstyzeinouuaaocisugaadeoouaaaaa".to_string(),
|
||||
);
|
||||
assert_eq!(
|
||||
"áạàảãăắặằẳẵâấậầẩẫéẹèẻẽêếệềểễiíịìỉĩoóọòỏõôốộồổỗơớợờởỡúụùủũưứựừửữyýỵỳỷỹđ"
|
||||
.as_bytes()
|
||||
.transliterate(),
|
||||
"aaaaaaaaaaaaaaaaaeeeeeeeeeeeiiiiiioooooooooooooooooouuuuuuuuuuuyyyyyyd".to_string(),
|
||||
);
|
||||
assert_ne!(
|
||||
"ěřůøĉĝĥĵŝŭèùÿėįųāēīūļķņģőűëïąćęłńśźżõșțčďĺľňŕšťýžéíñóúüåäöçîşûğăâđêôơưáàãảạfifl"
|
||||
.as_bytes()
|
||||
.transliterate(),
|
||||
"ěřůøĉĝĥĵŝŭèùÿėįųāēīūļķņģőűëïąćęłńśźżõșțčďĺľňŕšťýžéíñóúüåäöçîşûğăâđêôơưáàãảạfifl".to_string()
|
||||
);
|
||||
assert_eq!(
|
||||
"THEQUICKBROWNFOXJUMPEDOVERTHELAZYDOGthequickbrownfoxjumpedoverthelazydog"
|
||||
.as_bytes()
|
||||
.transliterate(),
|
||||
"THEQUICKBROWNFOXJUMPEDOVERTHELAZYDOGthequickbrownfoxjumpedoverthelazydog".to_string()
|
||||
);
|
||||
}
|
||||
}
|
||||
use table::*;
|
||||
pub use traits::*;
|
||||
|
|
|
|||
762
yazi-shared/src/transliterate/table.rs
Normal file
762
yazi-shared/src/transliterate/table.rs
Normal file
|
|
@ -0,0 +1,762 @@
|
|||
const TABLE_0: [&str; 496] = [
|
||||
"A", // À 192
|
||||
"A", // Á 193
|
||||
"A", // Â 194
|
||||
"A", // Ã 195
|
||||
"A", // Ä 196
|
||||
"A", // Å 197
|
||||
"AE", // Æ 198
|
||||
"C", // Ç 199
|
||||
"E", // È 200
|
||||
"E", // É 201
|
||||
"E", // Ê 202
|
||||
"E", // Ë 203
|
||||
"I", // Ì 204
|
||||
"I", // Í 205
|
||||
"I", // Î 206
|
||||
"I", // Ï 207
|
||||
"D", // Ð 208
|
||||
"N", // Ñ 209
|
||||
"O", // Ò 210
|
||||
"O", // Ó 211
|
||||
"O", // Ô 212
|
||||
"O", // Õ 213
|
||||
"O", // Ö 214
|
||||
"×", // × 215
|
||||
"O", // Ø 216
|
||||
"U", // Ù 217
|
||||
"U", // Ú 218
|
||||
"U", // Û 219
|
||||
"U", // Ü 220
|
||||
"Y", // Ý 221
|
||||
"T", // Þ 222
|
||||
"ss", // ß 223
|
||||
"a", // à 224
|
||||
"a", // á 225
|
||||
"a", // â 226
|
||||
"a", // ã 227
|
||||
"a", // ä 228
|
||||
"a", // å 229
|
||||
"ae", // æ 230
|
||||
"c", // ç 231
|
||||
"e", // è 232
|
||||
"e", // é 233
|
||||
"e", // ê 234
|
||||
"e", // ë 235
|
||||
"i", // ì 236
|
||||
"i", // í 237
|
||||
"i", // î 238
|
||||
"i", // ï 239
|
||||
"d", // ð 240
|
||||
"n", // ñ 241
|
||||
"o", // ò 242
|
||||
"o", // ó 243
|
||||
"o", // ô 244
|
||||
"o", // õ 245
|
||||
"o", // ö 246
|
||||
"÷", // ÷ 247
|
||||
"o", // ø 248
|
||||
"u", // ù 249
|
||||
"u", // ú 250
|
||||
"u", // û 251
|
||||
"u", // ü 252
|
||||
"y", // ý 253
|
||||
"t", // þ 254
|
||||
"y", // ÿ 255
|
||||
"A", // Ā 256
|
||||
"a", // ā 257
|
||||
"A", // Ă 258
|
||||
"a", // ă 259
|
||||
"A", // Ą 260
|
||||
"a", // ą 261
|
||||
"C", // Ć 262
|
||||
"c", // ć 263
|
||||
"C", // Ĉ 264
|
||||
"c", // ĉ 265
|
||||
"C", // Ċ 266
|
||||
"c", // ċ 267
|
||||
"C", // Č 268
|
||||
"c", // č 269
|
||||
"D", // Ď 270
|
||||
"d", // ď 271
|
||||
"D", // Đ 272
|
||||
"d", // đ 273
|
||||
"E", // Ē 274
|
||||
"e", // ē 275
|
||||
"E", // Ĕ 276
|
||||
"e", // ĕ 277
|
||||
"E", // Ė 278
|
||||
"e", // ė 279
|
||||
"E", // Ę 280
|
||||
"e", // ę 281
|
||||
"E", // Ě 282
|
||||
"e", // ě 283
|
||||
"G", // Ĝ 284
|
||||
"g", // ĝ 285
|
||||
"G", // Ğ 286
|
||||
"g", // ğ 287
|
||||
"G", // Ġ 288
|
||||
"g", // ġ 289
|
||||
"G", // Ģ 290
|
||||
"g", // ģ 291
|
||||
"H", // Ĥ 292
|
||||
"h", // ĥ 293
|
||||
"H", // Ħ 294
|
||||
"h", // ħ 295
|
||||
"I", // Ĩ 296
|
||||
"i", // ĩ 297
|
||||
"I", // Ī 298
|
||||
"i", // ī 299
|
||||
"I", // Ĭ 300
|
||||
"i", // ĭ 301
|
||||
"I", // Į 302
|
||||
"i", // į 303
|
||||
"I", // İ 304
|
||||
"i", // ı 305
|
||||
"IJ", // IJ 306
|
||||
"ij", // ij 307
|
||||
"J", // Ĵ 308
|
||||
"j", // ĵ 309
|
||||
"K", // Ķ 310
|
||||
"k", // ķ 311
|
||||
"k", // ĸ 312
|
||||
"L", // Ĺ 313
|
||||
"l", // ĺ 314
|
||||
"L", // Ļ 315
|
||||
"l", // ļ 316
|
||||
"L", // Ľ 317
|
||||
"l", // ľ 318
|
||||
"L", // Ŀ 319
|
||||
"l", // ŀ 320
|
||||
"L", // Ł 321
|
||||
"l", // ł 322
|
||||
"N", // Ń 323
|
||||
"n", // ń 324
|
||||
"N", // Ņ 325
|
||||
"n", // ņ 326
|
||||
"N", // Ň 327
|
||||
"n", // ň 328
|
||||
"n", // ʼn 329
|
||||
"N", // Ŋ 330
|
||||
"n", // ŋ 331
|
||||
"O", // Ō 332
|
||||
"o", // ō 333
|
||||
"O", // Ŏ 334
|
||||
"o", // ŏ 335
|
||||
"O", // Ő 336
|
||||
"o", // ő 337
|
||||
"OE", // Œ 338
|
||||
"oe", // œ 339
|
||||
"R", // Ŕ 340
|
||||
"r", // ŕ 341
|
||||
"R", // Ŗ 342
|
||||
"r", // ŗ 343
|
||||
"R", // Ř 344
|
||||
"r", // ř 345
|
||||
"S", // Ś 346
|
||||
"s", // ś 347
|
||||
"S", // Ŝ 348
|
||||
"s", // ŝ 349
|
||||
"S", // Ş 350
|
||||
"s", // ş 351
|
||||
"S", // Š 352
|
||||
"s", // š 353
|
||||
"T", // Ţ 354
|
||||
"t", // ţ 355
|
||||
"T", // Ť 356
|
||||
"t", // ť 357
|
||||
"T", // Ŧ 358
|
||||
"t", // ŧ 359
|
||||
"U", // Ũ 360
|
||||
"u", // ũ 361
|
||||
"U", // Ū 362
|
||||
"u", // ū 363
|
||||
"U", // Ŭ 364
|
||||
"u", // ŭ 365
|
||||
"U", // Ů 366
|
||||
"u", // ů 367
|
||||
"U", // Ű 368
|
||||
"u", // ű 369
|
||||
"U", // Ų 370
|
||||
"u", // ų 371
|
||||
"W", // Ŵ 372
|
||||
"w", // ŵ 373
|
||||
"Y", // Ŷ 374
|
||||
"y", // ŷ 375
|
||||
"Y", // Ÿ 376
|
||||
"Z", // Ź 377
|
||||
"z", // ź 378
|
||||
"Z", // Ż 379
|
||||
"z", // ż 380
|
||||
"Z", // Ž 381
|
||||
"z", // ž 382
|
||||
"s", // ſ 383
|
||||
"ƀ", // ƀ 384
|
||||
"B", // Ɓ 385
|
||||
"Ƃ", // Ƃ 386
|
||||
"ƃ", // ƃ 387
|
||||
"Ƅ", // Ƅ 388
|
||||
"ƅ", // ƅ 389
|
||||
"O", // Ɔ 390
|
||||
"Ƈ", // Ƈ 391
|
||||
"ƈ", // ƈ 392
|
||||
"Ɖ", // Ɖ 393
|
||||
"D", // Ɗ 394
|
||||
"Ƌ", // Ƌ 395
|
||||
"ƌ", // ƌ 396
|
||||
"ƍ", // ƍ 397
|
||||
"Ǝ", // Ǝ 398
|
||||
"E", // Ə 399
|
||||
"E", // Ɛ 400
|
||||
"F", // Ƒ 401
|
||||
"f", // ƒ 402
|
||||
"Ɠ", // Ɠ 403
|
||||
"Ɣ", // Ɣ 404
|
||||
"ƕ", // ƕ 405
|
||||
"Ɩ", // Ɩ 406
|
||||
"Ɨ", // Ɨ 407
|
||||
"K", // Ƙ 408
|
||||
"k", // ƙ 409
|
||||
"l", // ƚ 410
|
||||
"l", // ƛ 411
|
||||
"Ɯ", // Ɯ 412
|
||||
"N", // Ɲ 413
|
||||
"ƞ", // ƞ 414
|
||||
"O", // Ɵ 415
|
||||
"O", // Ơ 416
|
||||
"o", // ơ 417
|
||||
"Ƣ", // Ƣ 418
|
||||
"ƣ", // ƣ 419
|
||||
"Ƥ", // Ƥ 420
|
||||
"ƥ", // ƥ 421
|
||||
"Ʀ", // Ʀ 422
|
||||
"Ƨ", // Ƨ 423
|
||||
"ƨ", // ƨ 424
|
||||
"Ʃ", // Ʃ 425
|
||||
"ƪ", // ƪ 426
|
||||
"ƫ", // ƫ 427
|
||||
"Ƭ", // Ƭ 428
|
||||
"ƭ", // ƭ 429
|
||||
"Ʈ", // Ʈ 430
|
||||
"U", // Ư 431
|
||||
"u", // ư 432
|
||||
"Ʊ", // Ʊ 433
|
||||
"Ʋ", // Ʋ 434
|
||||
"Y", // Ƴ 435
|
||||
"y", // ƴ 436
|
||||
"Z", // Ƶ 437
|
||||
"z", // ƶ 438
|
||||
"Ʒ", // Ʒ 439
|
||||
"Ƹ", // Ƹ 440
|
||||
"ƹ", // ƹ 441
|
||||
"ƺ", // ƺ 442
|
||||
"ƻ", // ƻ 443
|
||||
"Ƽ", // Ƽ 444
|
||||
"ƽ", // ƽ 445
|
||||
"ƾ", // ƾ 446
|
||||
"ƿ", // ƿ 447
|
||||
"ǀ", // ǀ 448
|
||||
"ǁ", // ǁ 449
|
||||
"ǂ", // ǂ 450
|
||||
"ǃ", // ǃ 451
|
||||
"DZ", // DŽ 452
|
||||
"Dz", // Dž 453
|
||||
"dz", // dž 454
|
||||
"LJ", // LJ 455
|
||||
"Lj", // Lj 456
|
||||
"lj", // lj 457
|
||||
"NJ", // NJ 458
|
||||
"Nj", // Nj 459
|
||||
"nj", // nj 460
|
||||
"A", // Ǎ 461
|
||||
"a", // ǎ 462
|
||||
"I", // Ǐ 463
|
||||
"i", // ǐ 464
|
||||
"O", // Ǒ 465
|
||||
"o", // ǒ 466
|
||||
"U", // Ǔ 467
|
||||
"u", // ǔ 468
|
||||
"U", // Ǖ 469
|
||||
"u", // ǖ 470
|
||||
"U", // Ǘ 471
|
||||
"u", // ǘ 472
|
||||
"U", // Ǚ 473
|
||||
"u", // ǚ 474
|
||||
"U", // Ǜ 475
|
||||
"u", // ǜ 476
|
||||
"ǝ", // ǝ 477
|
||||
"Ǟ", // Ǟ 478
|
||||
"ǟ", // ǟ 479
|
||||
"Ǡ", // Ǡ 480
|
||||
"ǡ", // ǡ 481
|
||||
"Ǣ", // Ǣ 482
|
||||
"ǣ", // ǣ 483
|
||||
"Ǥ", // Ǥ 484
|
||||
"ǥ", // ǥ 485
|
||||
"G", // Ǧ 486
|
||||
"g", // ǧ 487
|
||||
"Ǩ", // Ǩ 488
|
||||
"ǩ", // ǩ 489
|
||||
"O", // Ǫ 490
|
||||
"o", // ǫ 491
|
||||
"Ǭ", // Ǭ 492
|
||||
"ǭ", // ǭ 493
|
||||
"Ǯ", // Ǯ 494
|
||||
"e", // ǯ 495
|
||||
"j", // ǰ 496
|
||||
"DZ", // DZ 497
|
||||
"Dz", // Dz 498
|
||||
"dz", // dz 499
|
||||
"G", // Ǵ 500
|
||||
"g", // ǵ 501
|
||||
"Ƕ", // Ƕ 502
|
||||
"Ƿ", // Ƿ 503
|
||||
"N", // Ǹ 504
|
||||
"n", // ǹ 505
|
||||
"A", // Ǻ 506
|
||||
"a", // ǻ 507
|
||||
"AE", // Ǽ 508
|
||||
"ae", // ǽ 509
|
||||
"O", // Ǿ 510
|
||||
"o", // ǿ 511
|
||||
"Ȁ", // Ȁ 512
|
||||
"ȁ", // ȁ 513
|
||||
"Ȃ", // Ȃ 514
|
||||
"ȃ", // ȃ 515
|
||||
"Ȅ", // Ȅ 516
|
||||
"ȅ", // ȅ 517
|
||||
"Ȇ", // Ȇ 518
|
||||
"ȇ", // ȇ 519
|
||||
"Ȉ", // Ȉ 520
|
||||
"ȉ", // ȉ 521
|
||||
"Ȋ", // Ȋ 522
|
||||
"ȋ", // ȋ 523
|
||||
"Ȍ", // Ȍ 524
|
||||
"ȍ", // ȍ 525
|
||||
"Ȏ", // Ȏ 526
|
||||
"ȏ", // ȏ 527
|
||||
"Ȑ", // Ȑ 528
|
||||
"ȑ", // ȑ 529
|
||||
"Ȓ", // Ȓ 530
|
||||
"ȓ", // ȓ 531
|
||||
"Ȕ", // Ȕ 532
|
||||
"ȕ", // ȕ 533
|
||||
"Ȗ", // Ȗ 534
|
||||
"ȗ", // ȗ 535
|
||||
"S", // Ș 536
|
||||
"s", // ș 537
|
||||
"T", // Ț 538
|
||||
"t", // ț 539
|
||||
"Ȝ", // Ȝ 540
|
||||
"ȝ", // ȝ 541
|
||||
"Ȟ", // Ȟ 542
|
||||
"ȟ", // ȟ 543
|
||||
"Ƞ", // Ƞ 544
|
||||
"ȡ", // ȡ 545
|
||||
"Ȣ", // Ȣ 546
|
||||
"ȣ", // ȣ 547
|
||||
"Ȥ", // Ȥ 548
|
||||
"ȥ", // ȥ 549
|
||||
"Ȧ", // Ȧ 550
|
||||
"ȧ", // ȧ 551
|
||||
"Ȩ", // Ȩ 552
|
||||
"ȩ", // ȩ 553
|
||||
"Ȫ", // Ȫ 554
|
||||
"ȫ", // ȫ 555
|
||||
"Ȭ", // Ȭ 556
|
||||
"ȭ", // ȭ 557
|
||||
"Ȯ", // Ȯ 558
|
||||
"ȯ", // ȯ 559
|
||||
"Ȱ", // Ȱ 560
|
||||
"ȱ", // ȱ 561
|
||||
"Y", // Ȳ 562
|
||||
"y", // ȳ 563
|
||||
"ȴ", // ȴ 564
|
||||
"ȵ", // ȵ 565
|
||||
"ȶ", // ȶ 566
|
||||
"j", // ȷ 567
|
||||
"ȸ", // ȸ 568
|
||||
"ȹ", // ȹ 569
|
||||
"Ⱥ", // Ⱥ 570
|
||||
"Ȼ", // Ȼ 571
|
||||
"ȼ", // ȼ 572
|
||||
"L", // Ƚ 573
|
||||
"Ⱦ", // Ⱦ 574
|
||||
"ȿ", // ȿ 575
|
||||
"ɀ", // ɀ 576
|
||||
"Ɂ", // Ɂ 577
|
||||
"ɂ", // ɂ 578
|
||||
"Ƀ", // Ƀ 579
|
||||
"Ʉ", // Ʉ 580
|
||||
"Ʌ", // Ʌ 581
|
||||
"Ɇ", // Ɇ 582
|
||||
"ɇ", // ɇ 583
|
||||
"Ɉ", // Ɉ 584
|
||||
"ɉ", // ɉ 585
|
||||
"Ɋ", // Ɋ 586
|
||||
"ɋ", // ɋ 587
|
||||
"Ɍ", // Ɍ 588
|
||||
"ɍ", // ɍ 589
|
||||
"Ɏ", // Ɏ 590
|
||||
"ɏ", // ɏ 591
|
||||
"a", // ɐ 592
|
||||
"a", // ɑ 593
|
||||
"a", // ɒ 594
|
||||
"b", // ɓ 595
|
||||
"o", // ɔ 596
|
||||
"c", // ɕ 597
|
||||
"d", // ɖ 598
|
||||
"d", // ɗ 599
|
||||
"e", // ɘ 600
|
||||
"e", // ə 601
|
||||
"e", // ɚ 602
|
||||
"o", // ɛ 603
|
||||
"e", // ɜ 604
|
||||
"e", // ɝ 605
|
||||
"e", // ɞ 606
|
||||
"j", // ɟ 607
|
||||
"g", // ɠ 608
|
||||
"g", // ɡ 609
|
||||
"ɢ", // ɢ 610
|
||||
"g", // ɣ 611
|
||||
"ɤ", // ɤ 612
|
||||
"h", // ɥ 613
|
||||
"h", // ɦ 614
|
||||
"h", // ɧ 615
|
||||
"i", // ɨ 616
|
||||
"i", // ɩ 617
|
||||
"ɪ", // ɪ 618
|
||||
"l", // ɫ 619
|
||||
"l", // ɬ 620
|
||||
"l", // ɭ 621
|
||||
"le", // ɮ 622
|
||||
"m", // ɯ 623
|
||||
"m", // ɰ 624
|
||||
"m", // ɱ 625
|
||||
"n", // ɲ 626
|
||||
"n", // ɳ 627
|
||||
"ɴ", // ɴ 628
|
||||
"o", // ɵ 629
|
||||
"OE", // ɶ 630
|
||||
"ɷ", // ɷ 631
|
||||
"p", // ɸ 632
|
||||
"r", // ɹ 633
|
||||
"r", // ɺ 634
|
||||
"r", // ɻ 635
|
||||
"r", // ɼ 636
|
||||
"r", // ɽ 637
|
||||
"r", // ɾ 638
|
||||
"r", // ɿ 639
|
||||
"ʀ", // ʀ 640
|
||||
"R", // ʁ 641
|
||||
"s", // ʂ 642
|
||||
"s", // ʃ 643
|
||||
"j", // ʄ 644
|
||||
"s", // ʅ 645
|
||||
"s", // ʆ 646
|
||||
"t", // ʇ 647
|
||||
"t", // ʈ 648
|
||||
"u", // ʉ 649
|
||||
"u", // ʊ 650
|
||||
"v", // ʋ 651
|
||||
"v", // ʌ 652
|
||||
"w", // ʍ 653
|
||||
"y", // ʎ 654
|
||||
"ʏ", // ʏ 655
|
||||
"z", // ʐ 656
|
||||
"z", // ʑ 657
|
||||
"e", // ʒ 658
|
||||
"e", // ʓ 659
|
||||
"ʔ", // ʔ 660
|
||||
"ʕ", // ʕ 661
|
||||
"ʖ", // ʖ 662
|
||||
"C", // ʗ 663
|
||||
"o", // ʘ 664
|
||||
"ʙ", // ʙ 665
|
||||
"e", // ʚ 666
|
||||
"G", // ʛ 667
|
||||
"ʜ", // ʜ 668
|
||||
"j", // ʝ 669
|
||||
"k", // ʞ 670
|
||||
"ʟ", // ʟ 671
|
||||
"q", // ʠ 672
|
||||
"ʡ", // ʡ 673
|
||||
"ʢ", // ʢ 674
|
||||
"dz", // ʣ 675
|
||||
"de", // ʤ 676
|
||||
"dz", // ʥ 677
|
||||
"ts", // ʦ 678
|
||||
"ts", // ʧ 679
|
||||
"tc", // ʨ 680
|
||||
"fn", // ʩ 681
|
||||
"ls", // ʪ 682
|
||||
"lz", // ʫ 683
|
||||
"W", // ʬ 684
|
||||
"ʭ", // ʭ 685
|
||||
"h", // ʮ 686
|
||||
"h", // ʯ 687
|
||||
];
|
||||
|
||||
const TABLE_1: [&str; 246] = [
|
||||
"B", // Ḅ 7684
|
||||
"b", // ḅ 7685
|
||||
"Ḇ", // Ḇ 7686
|
||||
"ḇ", // ḇ 7687
|
||||
"Ḉ", // Ḉ 7688
|
||||
"ḉ", // ḉ 7689
|
||||
"Ḋ", // Ḋ 7690
|
||||
"ḋ", // ḋ 7691
|
||||
"D", // Ḍ 7692
|
||||
"d", // ḍ 7693
|
||||
"D", // Ḏ 7694
|
||||
"d", // ḏ 7695
|
||||
"Ḑ", // Ḑ 7696
|
||||
"ḑ", // ḑ 7697
|
||||
"D", // Ḓ 7698
|
||||
"d", // ḓ 7699
|
||||
"Ḕ", // Ḕ 7700
|
||||
"ḕ", // ḕ 7701
|
||||
"Ḗ", // Ḗ 7702
|
||||
"ḗ", // ḗ 7703
|
||||
"Ḙ", // Ḙ 7704
|
||||
"ḙ", // ḙ 7705
|
||||
"Ḛ", // Ḛ 7706
|
||||
"ḛ", // ḛ 7707
|
||||
"Ḝ", // Ḝ 7708
|
||||
"ḝ", // ḝ 7709
|
||||
"Ḟ", // Ḟ 7710
|
||||
"ḟ", // ḟ 7711
|
||||
"G", // Ḡ 7712
|
||||
"g", // ḡ 7713
|
||||
"Ḣ", // Ḣ 7714
|
||||
"ḣ", // ḣ 7715
|
||||
"H", // Ḥ 7716
|
||||
"h", // ḥ 7717
|
||||
"Ḧ", // Ḧ 7718
|
||||
"ḧ", // ḧ 7719
|
||||
"Ḩ", // Ḩ 7720
|
||||
"ḩ", // ḩ 7721
|
||||
"H", // Ḫ 7722
|
||||
"h", // ḫ 7723
|
||||
"Ḭ", // Ḭ 7724
|
||||
"ḭ", // ḭ 7725
|
||||
"Ḯ", // Ḯ 7726
|
||||
"ḯ", // ḯ 7727
|
||||
"Ḱ", // Ḱ 7728
|
||||
"ḱ", // ḱ 7729
|
||||
"K", // Ḳ 7730
|
||||
"k", // ḳ 7731
|
||||
"K", // Ḵ 7732
|
||||
"k", // ḵ 7733
|
||||
"L", // Ḷ 7734
|
||||
"l", // ḷ 7735
|
||||
"L", // Ḹ 7736
|
||||
"l", // ḹ 7737
|
||||
"L", // Ḻ 7738
|
||||
"l", // ḻ 7739
|
||||
"L", // Ḽ 7740
|
||||
"l", // ḽ 7741
|
||||
"M", // Ḿ 7742
|
||||
"m", // ḿ 7743
|
||||
"M", // Ṁ 7744
|
||||
"m", // ṁ 7745
|
||||
"M", // Ṃ 7746
|
||||
"m", // ṃ 7747
|
||||
"N", // Ṅ 7748
|
||||
"n", // ṅ 7749
|
||||
"N", // Ṇ 7750
|
||||
"n", // ṇ 7751
|
||||
"N", // Ṉ 7752
|
||||
"n", // ṉ 7753
|
||||
"N", // Ṋ 7754
|
||||
"n", // ṋ 7755
|
||||
"Ṍ", // Ṍ 7756
|
||||
"ṍ", // ṍ 7757
|
||||
"Ṏ", // Ṏ 7758
|
||||
"ṏ", // ṏ 7759
|
||||
"Ṑ", // Ṑ 7760
|
||||
"ṑ", // ṑ 7761
|
||||
"Ṓ", // Ṓ 7762
|
||||
"ṓ", // ṓ 7763
|
||||
"Ṕ", // Ṕ 7764
|
||||
"ṕ", // ṕ 7765
|
||||
"Ṗ", // Ṗ 7766
|
||||
"ṗ", // ṗ 7767
|
||||
"R", // Ṙ 7768
|
||||
"r", // ṙ 7769
|
||||
"R", // Ṛ 7770
|
||||
"r", // ṛ 7771
|
||||
"R", // Ṝ 7772
|
||||
"r", // ṝ 7773
|
||||
"R", // Ṟ 7774
|
||||
"r", // ṟ 7775
|
||||
"S", // Ṡ 7776
|
||||
"s", // ṡ 7777
|
||||
"S", // Ṣ 7778
|
||||
"s", // ṣ 7779
|
||||
"Ṥ", // Ṥ 7780
|
||||
"ṥ", // ṥ 7781
|
||||
"Ṧ", // Ṧ 7782
|
||||
"ṧ", // ṧ 7783
|
||||
"Ṩ", // Ṩ 7784
|
||||
"ṩ", // ṩ 7785
|
||||
"Ṫ", // Ṫ 7786
|
||||
"ṫ", // ṫ 7787
|
||||
"T", // Ṭ 7788
|
||||
"t", // ṭ 7789
|
||||
"T", // Ṯ 7790
|
||||
"t", // ṯ 7791
|
||||
"T", // Ṱ 7792
|
||||
"t", // ṱ 7793
|
||||
"Ṳ", // Ṳ 7794
|
||||
"ṳ", // ṳ 7795
|
||||
"Ṵ", // Ṵ 7796
|
||||
"ṵ", // ṵ 7797
|
||||
"Ṷ", // Ṷ 7798
|
||||
"ṷ", // ṷ 7799
|
||||
"Ṹ", // Ṹ 7800
|
||||
"ṹ", // ṹ 7801
|
||||
"Ṻ", // Ṻ 7802
|
||||
"ṻ", // ṻ 7803
|
||||
"Ṽ", // Ṽ 7804
|
||||
"ṽ", // ṽ 7805
|
||||
"Ṿ", // Ṿ 7806
|
||||
"ṿ", // ṿ 7807
|
||||
"W", // Ẁ 7808
|
||||
"w", // ẁ 7809
|
||||
"W", // Ẃ 7810
|
||||
"w", // ẃ 7811
|
||||
"W", // Ẅ 7812
|
||||
"w", // ẅ 7813
|
||||
"Ẇ", // Ẇ 7814
|
||||
"ẇ", // ẇ 7815
|
||||
"Ẉ", // Ẉ 7816
|
||||
"ẉ", // ẉ 7817
|
||||
"Ẋ", // Ẋ 7818
|
||||
"ẋ", // ẋ 7819
|
||||
"Ẍ", // Ẍ 7820
|
||||
"ẍ", // ẍ 7821
|
||||
"Y", // Ẏ 7822
|
||||
"y", // ẏ 7823
|
||||
"Ẑ", // Ẑ 7824
|
||||
"ẑ", // ẑ 7825
|
||||
"Z", // Ẓ 7826
|
||||
"z", // ẓ 7827
|
||||
"Z", // Ẕ 7828
|
||||
"z", // ẕ 7829
|
||||
"h", // ẖ 7830
|
||||
"t", // ẗ 7831
|
||||
"ẘ", // ẘ 7832
|
||||
"ẙ", // ẙ 7833
|
||||
"ẚ", // ẚ 7834
|
||||
"ẛ", // ẛ 7835
|
||||
"ẜ", // ẜ 7836
|
||||
"ẝ", // ẝ 7837
|
||||
"SS", // ẞ 7838
|
||||
"ẟ", // ẟ 7839
|
||||
"A", // Ạ 7840
|
||||
"a", // ạ 7841
|
||||
"A", // Ả 7842
|
||||
"a", // ả 7843
|
||||
"A", // Ấ 7844
|
||||
"a", // ấ 7845
|
||||
"A", // Ầ 7846
|
||||
"a", // ầ 7847
|
||||
"A", // Ẩ 7848
|
||||
"a", // ẩ 7849
|
||||
"A", // Ẫ 7850
|
||||
"a", // ẫ 7851
|
||||
"A", // Ậ 7852
|
||||
"a", // ậ 7853
|
||||
"A", // Ắ 7854
|
||||
"a", // ắ 7855
|
||||
"A", // Ằ 7856
|
||||
"a", // ằ 7857
|
||||
"A", // Ẳ 7858
|
||||
"a", // ẳ 7859
|
||||
"A", // Ẵ 7860
|
||||
"a", // ẵ 7861
|
||||
"A", // Ặ 7862
|
||||
"a", // ặ 7863
|
||||
"E", // Ẹ 7864
|
||||
"e", // ẹ 7865
|
||||
"E", // Ẻ 7866
|
||||
"e", // ẻ 7867
|
||||
"E", // Ẽ 7868
|
||||
"e", // ẽ 7869
|
||||
"E", // Ế 7870
|
||||
"e", // ế 7871
|
||||
"E", // Ề 7872
|
||||
"e", // ề 7873
|
||||
"E", // Ể 7874
|
||||
"e", // ể 7875
|
||||
"E", // Ễ 7876
|
||||
"e", // ễ 7877
|
||||
"E", // Ệ 7878
|
||||
"e", // ệ 7879
|
||||
"I", // Ỉ 7880
|
||||
"i", // ỉ 7881
|
||||
"I", // Ị 7882
|
||||
"i", // ị 7883
|
||||
"O", // Ọ 7884
|
||||
"o", // ọ 7885
|
||||
"O", // Ỏ 7886
|
||||
"o", // ỏ 7887
|
||||
"O", // Ố 7888
|
||||
"o", // ố 7889
|
||||
"O", // Ồ 7890
|
||||
"o", // ồ 7891
|
||||
"O", // Ổ 7892
|
||||
"o", // ổ 7893
|
||||
"O", // Ỗ 7894
|
||||
"o", // ỗ 7895
|
||||
"O", // Ộ 7896
|
||||
"o", // ộ 7897
|
||||
"O", // Ớ 7898
|
||||
"o", // ớ 7899
|
||||
"O", // Ờ 7900
|
||||
"o", // ờ 7901
|
||||
"O", // Ở 7902
|
||||
"o", // ở 7903
|
||||
"O", // Ỡ 7904
|
||||
"o", // ỡ 7905
|
||||
"O", // Ợ 7906
|
||||
"o", // ợ 7907
|
||||
"U", // Ụ 7908
|
||||
"u", // ụ 7909
|
||||
"U", // Ủ 7910
|
||||
"u", // ủ 7911
|
||||
"U", // Ứ 7912
|
||||
"u", // ứ 7913
|
||||
"U", // Ừ 7914
|
||||
"u", // ừ 7915
|
||||
"U", // Ử 7916
|
||||
"u", // ử 7917
|
||||
"U", // Ữ 7918
|
||||
"u", // ữ 7919
|
||||
"U", // Ự 7920
|
||||
"u", // ự 7921
|
||||
"Y", // Ỳ 7922
|
||||
"y", // ỳ 7923
|
||||
"Y", // Ỵ 7924
|
||||
"y", // ỵ 7925
|
||||
"Y", // Ỷ 7926
|
||||
"y", // ỷ 7927
|
||||
"Y", // Ỹ 7928
|
||||
"y", // ỹ 7929
|
||||
];
|
||||
|
||||
const TABLE_2: [&str; 2] = [
|
||||
"fi", // fi 64257
|
||||
"fl", // fl 64258
|
||||
];
|
||||
|
||||
#[inline(always)]
|
||||
pub(super) fn lookup(c: char) -> Option<&'static str> {
|
||||
match c as u16 {
|
||||
192..=687 => unsafe { Some(TABLE_0.get_unchecked((c as u16 - 192) as usize)) },
|
||||
7684..=7929 => unsafe { Some(TABLE_1.get_unchecked((c as u16 - 7684) as usize)) },
|
||||
64257..=64258 => unsafe { Some(TABLE_2.get_unchecked((c as u16 - 64257) as usize)) },
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
69
yazi-shared/src/transliterate/traits.rs
Normal file
69
yazi-shared/src/transliterate/traits.rs
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
use core::str;
|
||||
use std::borrow::Cow;
|
||||
|
||||
pub trait Transliterator {
|
||||
fn transliterate(&self) -> Cow<str>;
|
||||
}
|
||||
|
||||
impl Transliterator for &[u8] {
|
||||
fn transliterate(&self) -> Cow<str> {
|
||||
// Fast path to skip over ASCII chars at the beginning of the string
|
||||
let ascii_len = self.iter().take_while(|&&c| c < 0x7f).count();
|
||||
if ascii_len >= self.len() {
|
||||
return Cow::Borrowed(unsafe { str::from_utf8_unchecked(self) });
|
||||
}
|
||||
|
||||
let (ascii, rest) = self.split_at(ascii_len);
|
||||
let ascii = unsafe { str::from_utf8_unchecked(ascii) };
|
||||
|
||||
// Reserve a bit more space to avoid reallocations on longer transliterations
|
||||
// but instead of `+ 16` uses `| 15` to stay in the smallest allocation bucket
|
||||
// for short strings
|
||||
let mut out = String::new();
|
||||
out.try_reserve_exact(self.len() | 15).unwrap_or_else(|_| panic!());
|
||||
out.push_str(ascii);
|
||||
|
||||
for c in String::from_utf8_lossy(rest).chars() {
|
||||
if let Some(s) = super::lookup(c) {
|
||||
out.push_str(s);
|
||||
} else {
|
||||
out.push(c);
|
||||
}
|
||||
}
|
||||
Cow::Owned(out)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_transliterate() {
|
||||
assert_eq!("Æcœ".as_bytes().transliterate(), "AEcoe");
|
||||
assert_eq!(
|
||||
"ěřůøĉĝĥĵŝŭèùÿėįųāēīūļķņģőűëïąćęłńśźżõșțčďĺľňŕšťýžéíñóúüåäöçîşûğăâđêôơưáàãảạ"
|
||||
.as_bytes()
|
||||
.transliterate(),
|
||||
"eruocghjsueuyeiuaeiulkngoueiacelnszzostcdllnrstyzeinouuaaocisugaadeoouaaaaa",
|
||||
);
|
||||
assert_eq!(
|
||||
"áạàảãăắặằẳẵâấậầẩẫéẹèẻẽêếệềểễiíịìỉĩoóọòỏõôốộồổỗơớợờởỡúụùủũưứựừửữyýỵỳỷỹđ"
|
||||
.as_bytes()
|
||||
.transliterate(),
|
||||
"aaaaaaaaaaaaaaaaaeeeeeeeeeeeiiiiiioooooooooooooooooouuuuuuuuuuuyyyyyyd",
|
||||
);
|
||||
assert_ne!(
|
||||
"ěřůøĉĝĥĵŝŭèùÿėįųāēīūļķņģőűëïąćęłńśźżõșțčďĺľňŕšťýžéíñóúüåäöçîşûğăâđêôơưáàãảạfifl"
|
||||
.as_bytes()
|
||||
.transliterate(),
|
||||
"ěřůøĉĝĥĵŝŭèùÿėįųāēīūļķņģőűëïąćęłńśźżõșțčďĺľňŕšťýžéíñóúüåäöçîşûğăâđêôơưáàãảạfifl"
|
||||
);
|
||||
assert_eq!(
|
||||
"THEQUICKBROWNFOXJUMPEDOVERTHELAZYDOGthequickbrownfoxjumpedoverthelazydog"
|
||||
.as_bytes()
|
||||
.transliterate(),
|
||||
"THEQUICKBROWNFOXJUMPEDOVERTHELAZYDOGthequickbrownfoxjumpedoverthelazydog"
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue