5 个版本
使用旧的 Rust 2015
0.4.1 | 2019 年 7 月 20 日 |
---|---|
0.4.0 | 2019 年 7 月 20 日 |
0.3.3 | 2019 年 7 月 20 日 |
#1209 在 文本处理
15KB
104 行
СЧЯСОПЏ.ҒLЁХ
CYRCONV 是一个有趣的伪西里尔字符映射器。默认情况下,它将给定输入文本的字符转换为西里尔(Lоок-Дlікё)对应字符,同时保持文本的可读性。使用 .flex 文件 CYRCON.FLEX 可以将任何字符集映射到所需输出集。
注意:仅在 ArchLinux 上进行了测试。可能无法在 Windows 上运行。您可能需要为系统安装终端字体。
安装
安装
有两种选项可供选择
- crates.io
注意:如果您想使用提供的 flex 文件,您必须手动从该存储库下载它们,并将它们复制到类似于 /usr/local/etc/cyrconv/flex
的文件夹中。
$ cargo install cyrconv
- 从源代码构建
在 src/bin 文件夹中构建程序,并将其移动到目标文件夹。
注意:请确保将 flex 文件夹外部的 flex
文件保存。目前没有安装程序,cyrconv 默认不查找 /usr/local/etc/.. 中的 flex 文件。
示例
// compile a release version
$ cargo build --release cyrconv
$ strip target/release/cyrconv
// copy into the user program folder
$ sudo cp target/release/cycronv /usr/local/bin
// make it executable
$ sudo chmod 755 /usr/local/bin/cyrconv
// copy flex files
$ sudo mkdir /usr/local/etc/cyrconv
$ sudo cp flex /usr/local/etc/cyrconv/
通用用法
该程序允许您将字符串作为单个参数或多个参数传递。如果您想使用 flex 选项,必须将它们作为第一个参数传递。
Cyrconv 可以以几种方式使用。
注意:从版本 0.4.0 开始,所有输入字符串都必须用 "" 括起来。flex 子命令位于输入字符串之后
帮助
Cyrconv 现在支持 help
参数
$ cyrconv help
$ cyrconv -h
$ cyrconv --help
作为参数传递的文本
您可以单独传递输入文本或与可选的 flex 文件一起传递。示例
$ cyrconv "Hello Friends"
$ cyrconv "How are you?" flex {..}/nko.flex
管道输入
通过管道(|)传递源或从文件中读取。
$ echo "Hello Friend!" | cyrconv
$ echo "Hello Friends!" | cyrconv flex {..}/1337-lite.flex
读取文本文件
< 操作符是第一个参数。可选的 .flex 文件也可以。
示例
$ cyrconv < ../Documents/the_hunger_games.txt
$ cyrconv < ../Documents/the_hunger_games.txt flex {..}/braille.flex
通过管道读取文本文件或命令输出也可以。
示例
$ ls -la | cyrconv
$ printf "Hello World\nHow are you?" | cyrconv
$ less LICENSE.md | cyrconv flex {..}/1337-lite.flex
从 stdin 读取
您可以将多行文本写入控制台。命令字符串 :quit
执行映射并退出程序。
示例
$ cyrconv
When the seagulls follow the trawler, it is because they think sardines will be thrown into the sea.
Interesting...
:quit
Шнёп тнё ѕёаgцllѕ fоllош тнё тгашlёг, іт іѕ вёсацѕё тнёч тніпк ѕагdіпёѕ шіll вё тнгошп іпто тнё ѕёа.
Іптёгёѕтіпg...
$ cyrconv flex {..}/braille.flex
Hello World.
How are you today?
:quit
⠓⠑⠇⠇⠕⠀⠺⠕⠗⠇⠙.
⠓⠕⠺⠀⠁⠗⠑⠀⠽⠕⠥⠀⠞⠕⠙⠁⠽?
' апd "
如果您想映射包含 ' 或 " 的字符串,您必须转义该字符或用不在字符串中的另一个字符包围该字符串。
示例
$ echo "What's up" | cyrconv
$ cyrconv "That's pretty \"cheap\"." flex {..}/braille.flex
$ echo "If you want to map a string that contains \' or \" you have to escape the character \
or surround the string other one, that\'s not in the string." | cyrconv
**注意:** 通过 stdin 不需要转义字符。
Счгсопѵ.flex 简单映射器
简单映射器接收一组字符并将其映射到相同长度的目标字符集。
Cyrconv.flex 提供默认映射集。简单映射器也可以与可选的 .flex 文件一起使用,如前例所示。
在 flex
文件夹中提供了多个简单映射集。您可以创建自己的。
默认简单映射器
默认映射无需 .flex 文件即可工作。
cyrconv 句子
示例
$ cyrconv When the seagulls follow the trawler, it is because they think sardines will be thrown into the sea.
Шнеп тне ѕеаgцllѕ fоllош тне тгашlег, іт іѕ весацѕе тнеч тніпк ѕагdіпеѕ шіll ве тнгошп іпто тне ѕеа.
Счгсопѵ.flёх
flex 选项允许您加载自定义字符映射文件。
cyrconv flex {flex_file} 句子
示例
$ cyrconv "When the seagulls follow the trawler, it is because they think sardines will be thrown into the
sea" flex rot-13.flex
Jura gur frnthyyf sbyybj gur genjyre, vg vf orpnhfr gurl guvax fneqvarf jvyy or guebja vagb gur frn
.flex 文件
flex 文件是一个简单的文本文件,由两行组成。
第一行是匹配预期输入字符的字符字符串。
第二行是包含所需输出字符集的字符字符串。
两行必须具有相同的字符数。
有趣的是
Сігсцмflёх
例如,字符 СІЯСЦМҒLЁХ ' ˇ ' 映射到字符 СДЯОП ' ^ '。
Тнё Яцѕѕіап 1337
您还可以组合不同的字符集。请注意,对于每个输出,都必须有一个 flex 文件提供作为输入的输出。
示例
$ cyrconv "Hello my friend. Nastrowje." flex {..}/1337-lite.flex | cyrconv
Н3ll0 мч fг13п). П4ѕтг0шј3.
当前可用的 flex 文件
如果您在此部分中看不到所有字符,您可能需要安装额外的终端字体。有关更多信息,请参阅您 Linux 发行版的 Wiki。
1337-l1t3.fl3x
Wh3n th3 s34gulls f0ll0w th3 tr4wl3r, 1t 1s b3(4us3 th3y th1nk s4r)1n3s w1ll b3 thr0wn 1nt0 th3 s34.
⠃⠗⠁⠊⠇⠇⠑.⠋⠇⠑⠭
注意: 这是拉丁文到盲文的正确转写。
⠺⠓⠑⠝⠀⠞⠓⠑⠀⠎⠑⠁⠛⠥⠇⠇⠎⠀⠋⠕⠇⠇⠕⠺⠀⠞⠓⠑⠀⠞⠗⠁⠺⠇⠑⠗,⠀⠊⠞⠀⠊⠎⠀⠃⠑⠉⠁⠥⠎⠑⠀⠞⠓⠑⠽⠀⠞⠓⠊⠝⠅⠀⠎⠁⠗⠙⠊⠝⠑⠎⠀⠺⠊⠇⠇⠀⠃⠑⠀⠞⠓⠗⠕⠺⠝⠀⠊⠝⠞⠕⠀⠞⠓⠑⠀⠎⠑⠁.
счгсопѵ.flёх
Шнёп тнё ѕёаgцllѕ fоllош тнё тгашlёг, іт іѕ вёсацѕё тнёч тніпк ѕагdіпёѕ шіll вё тнгошп іпто тнё ѕёа.
ჳeorჳia.flex
WႬeი ჯႬe Ⴝeaჳullჷ follow ჯႬe ჯrawler, iჯ iჷ ხeეauჷe ჯႬeႸ ჯႬiიk ჷarძiიeჷ will ხe ჯႬrowი iიჯo ჯႬe ჷea.
gͱεεκ.ϝιεϰ
Ψhεη ͳhε ϟεαgυιιϟ ϝοιοω ͳhε ͳͱαωιεͱ, iͳ iϟ βεϛαυϟε ͳhεγ ͳhiηκ ϟαͱδiηεϟ ωiιι βε ͳhͱοωη iηͳο ͳhε ϟεα.
nkߋ
Wߚen ߙߚe Seߡgߎlls fߋllߋW ߙߚe ߠrߡWler? ߊߙ ߊs ߕeߏߡߎse ߙߚe ߙߚߊnk Sߡr߄ߊnes Wߊll ߕe ߙߚrߋWn ߊn ߙߚe seߡ,
ebg-13.syrk
Jura gur frnthyyf sbyybj gur genjyre, vg vf orpnhfr gurl guvax fneqvarf jvyy or guebja vagb gur frn.
ⵜⵊFⴷⵍⴷGⴼ.Fⵃⴺⵝ
Wⴺⵍ ⵜⵊFⴷⵍⴷGⵗⵃⵗS FⵙⵃⵃⵙW ⵜⵊFⴷⵍⴷGⵗⵊⵍⴷR, ⵊⵜ ⵊS BⴺⵎⴷⵡSⵗⵊⵍⴷS ⵜⵊFⴷⵍⴷGⵗⵖ ⵜⵊFⵍⴷK SⵗRDⵍⴷS Wⵊⵃⵃ Bⴺ ⵜⵊFⴷⵍⴷGⵗRⵍⴷ ⵊⵍⵜⵊⵙ ⵜⵊFⴷⵍⴷGⵗⵖ Sⵗ.
Zzz.flёх
Zzzz zzz zzzzzzzz zzzzzz zzz zzzzzzz, zz zz zzzzzzz zzzz zzzzz zzzzzzzz zzzz zz zzzzzz zzzz zzz zzz.
_.flёх
依赖关系
~1.4–2.3MB
~43K SLoC