4 个版本
0.6.0 | 2023 年 5 月 23 日 |
---|---|
0.5.2 | 2023 年 4 月 25 日 |
0.5.1 | 2023 年 4 月 25 日 |
0.5.0 | 2023 年 4 月 25 日 |
#9 在 #transliteration
每月下载量 52
740KB
958 行
transliterate-ferris
IMP: 如果您正在编写代码,请勿使用 rust-analyzer。它已多次在 vscode 和 nvim 上崩溃。我怀疑 data.rs 造成了这个问题。
安装
cargo安装 IndicScriptSwap
用法
IndicScriptSwap--源 devanagari--目标 telugu--转换 i2i--输入数据.txt--输出 out.txt
注意:也支持输入和输出管道:cat data.txt | IndicScriptSwap --source devanagari --destination telugu --conversion i2i
Rust 库,用于在脚本之间转写。
问题
- 构建时间过长(36秒!!!)
- 我以为移除
serde
和json
依赖项并从 data.rs 读取可以提高构建时间,但这使它变得更糟。 - 使用这种方法代码运行得略快一些。
- 由于这个原因,rust-analyzer 在 vs-code 上崩溃。
- 我以为移除
- 与
aksharamukha-python
相比,在相同的转换中,耗时从约 30 毫秒增加到约 150 毫秒。(可以做得更好) - 代码块嵌套太多,看起来很丑。
- 没有测试,所以更改可能产生意外的后果。
尽管存在这些问题,但它似乎足以满足基本的转换需求。
设置和使用
git clone https://github.com/MSSRPRAD/ transliterate-ferris.git
cdtransliterate-ferris
time cargo run--发布1>out.txt2>错误.txt
out.txt
包含输出。 error.txt
包含程序发出的警告和错误消息。
main.rs
包含一种“演示”。输入文本如下
letinput: String = "अस्त्य् उत्तरस्यां दिशि देवतात्मा हिमालयो नाम नगाधिराजः । पूर्वापरौ तोयनिधी विगाह्य स्थितः पृथिव्या इव मानदण्डः ॥" .to_string();
您可以将它更改为尝试不同的测试用例。
对于上述输入文本生成的输出是
"asty uttarasyAM diSi devatAtmA himAlayo nAma nagADirAjaH .\npUrvAparO toyaniDI vigAhya sTitaH pfTivyA iva mAnadaRqaH .."
注意
我已经测试过的一些转换(需要测试更多)
还有许多在此未提及的脚本之间的转写可以完成。请尝试它们!(见 src/data.rs 了解各种脚本名称)
源键 | 目标键 | 函数 |
---|---|---|
devanagari | slp1 | convert_indic_to_roman() |
devanagari | iast | convert_indic_to_roman() |
devanagari | hk | convert_indic_to_roman() |
telugu | slp1 | convert_indic_to_roman() |
telugu | iast | convert_indic_to_roman() |
telugu | hk | convert_indic_to_roman() |
kannada | slp1 | convert_indic_to_roman() |
kannada | iast | convert_indic_to_roman() |
kannada | hk | convert_indic_to_roman() |
slp1 | devanagari | convert_roman_to_indic() |
slp1 | telugu | convert_roman_to_indic() |
slp1 | kannada | convert_roman_to_indic() |
slp1 | itrans | convert_roman_to_roman() |
iast | slp1 | convert_roman_to_roman() |
slp1 | iast | convert_roman_to_roman() |
iast | slp1 | convert_roman_to_roman() |
iast | itrans | convert_roman_to_roman() |
iast | hk | convert_roman_to_roman() |
devanagari | telugu | convert_roman_to_roman() |
telugu | devanagari | convert_roman_to_roman() |
devanagari | kannada | convert_roman_to_roman() |
kannada | devanagari | convert_roman_to_roman() |
kannada | telugu | convert_roman_to_roman() |
telugu | kannada | convert_roman_to_roman() |
主要关注的是将德文纳加里文转换为 slp1,因为许多程序需要 slp1 格式的输入,而 Rust 尚未提供德文纳加里文到 slp1 的转换库。结果是,制作 convert_roman_to_indic() 和 convert_roman_to_roman() 函数并没有太多区别,所以我也将它实现了。
可能工作的脚本列表 IndicScripts = [ 'RomanSemitic', 'Makasar', 'Nandinagari', 'Kawi', 'Shahmukhi', 'Pallava', 'Hebrew', 'LaoTham', 'LueTham', 'KhuenTham', 'TamilExtended', 'Marchen', 'MasaramGondi', 'GunjalaGondi', 'Soyombo', 'Dogra', 'KhomThai', 'KhamtiShan', 'TaiLaing', 'Mon', 'Khojki', 'Shan', 'Ranjana', 'ZanabazarSquare', 'Rejang', 'GranthaGrantamil', 'Devanagari', 'Multani', 'Ahom', 'Mahajani', 'Lao2', 'Hanunoo', 'Buhid', 'Siddham', 'SiddhamDevanagari', 'GranthaPandya', 'Vatteluttu', 'Khudawadi', 'Bhaiksuki', 'Sharada', 'Newa', 'Takri', 'SylotiNagri', 'Tirhuta', 'Modi', 'Kaithi', 'Kharoshthi', 'Telugu', 'Kannada', 'Malayalam', 'Gujarati', 'Bengali', 'Oriya', 'Gurmukhi', 'Tamil', 'Assamese', 'Saurashtra', 'TamilBrahmi', 'Grantha', 'TamilGrantha', 'Sinhala', 'Khmer', 'Burmese', 'Urdu', 'Balinese', 'Javanese', 'Thaana', 'Tibetan', 'Thai', 'OldPersian', 'Limbu', 'Lepcha', 'Sundanese', 'Tagalog', 'Tagbanwa', 'Buginese', 'Chakma', 'PhagsPa', 'MeeteiMayek', 'LaoPali', 'BatakKaro','BatakPakpak','BatakSima','BatakToba','BatakManda', 'Cham', 'TaiTham', 'Lao', 'Brahmi' ]LatinScripts = ['IASTLOC', 'RomanColloquial', 'ISOPali', 'RomanKana', 'BarahaNorth', 'BarahaSouth', 'Mongolian', 'SLP1', 'Wancho', 'Mro', 'IASTPali', 'HanifiRohingya','Ariyaka', 'RomanReadable', 'Aksharaa', 'WarangCiti', 'SoraSompeng','WX-kok','Avestan','ISO','IAST','HK','Titus','Itrans','Velthuis','WX','Inter','IPA','TolongSiki','Santali','RussianCyrillic']
依赖项
~1.2–1.8MB
~34K SLoC