25 个版本
0.6.0 | 2024 年 8 月 13 日 |
---|---|
0.5.8 | 2024 年 7 月 22 日 |
0.5.1 | 2024 年 5 月 24 日 |
0.4.5 | 2024 年 2 月 2 日 |
0.4.0 | 2023 年 7 月 15 日 |
42 在 国际化(i18n) 中排名
每月 346 次下载
41KB
697 行
decasify
一个命令行工具,Rust 包,Lua Rock,Python 模块和 JavaScript 模块,用于根据地区特定的风格指南将字符串转换为标题大小写,包括对土耳其语的支持。
该项目源于对 Markdown 中全大写标题的困扰,似乎没有工具能正确地将它们转换为标题大小写字符串,尤其是从土耳其语转换。许多工具可以处理单个单词的大小写,还有一些其他工具可以处理英语字符串,但似乎没有针对完整土耳其字符串的工具。
CLI 默认为标题大小写和英语,但还提供了小写、大写和句子大小写的选项。Rust、Lua、Python 和 JavaScript 库 API 具有针对每种操作的特定功能。当前,API 默认使用英语规则和(对于英语)Gruber 风格规则,但其他规则也可用。土耳其规则遵循土耳其语言研究所的指南。
对于英语,已知有三本风格指南:美国新闻协会(AP)、芝加哥手册(CMOS)和约翰·格鲁伯的 Daring Fireball(Gruber)。Gruber 风格是最完整的,由 titlecase 包 实现。CMOS 风格处理许多词性,但存在标点符号相关的问题。AP 风格大部分未实现。欢迎为更好的风格指南支持或更多语言做出贡献。
$ decasify -l tr ILIK SU VE İTEN RÜZGARLAR
Ilık Su ve İten Rüzgarlar
$ echo ILIK SU VE İTEN RÜZGARLAR | decasify -l tr
Ilık Su ve İten Rüzgarlar
$ echo foo BAR AND baz: an alter ego | decasify -l en -s gruber
Foo BAR and Baz: An Alter Ego
用作 CLI 工具
CLI 的使用非常简单。输入可以是 shell 参数或 STDIN。
$ decasify --help
A CLI tool to convert all-caps strings to title-case or other less aggressive tones that supports
Turkish input
Usage: decasify [OPTIONS] [INPUT]...
Arguments:
[INPUT]... Input string
Options:
-l, --locale <LOCALE> Locale [default: EN] [possible values: EN, TR]
-c, --case <CASE> Target case [default: Title] [possible values: Lower, Sentence, Title,
Upper]
-s, --style <STYLE> Style Guide [possible values: ap, cmos, gruber]
-h, --help Print help
-V, --version Print version
首先,检查您的发行版是否有软件包,例如,对于 Arch Linux,您可以从 AUR 获取。
否则,对于许多平台,您可以直接运行它或将它安装到 shell 中使用 Nix Flakes。
$ nix run github:alerque/decasify
要从源代码进行完整安装,请获取附在最新版本中的tarball,或者使用Git克隆仓库。不要使用从发布版链接的“源代码”zip/tar.gz文件,而是选择tar.zst
源文件。如果你使用Git克隆,首先在检出后运行./bootstrap.sh
。在源代码发布tarball中不需要这个步骤。接下来,使用以下命令进行配置和安装:
$ ./configure
$ make
$ sudo make install
请注意,从源代码安装的优点是包括手册页和shell补全。所有常规的autotools选项都适用,详细信息请见--help
。对于发行版打包者最常用的选项可能是--prefix /usr
,将安装位置从默认的/usr/local
更改。
当然,也可以直接使用Cargo安装裸二进制文件。
$ cargo install --features cli decasify
作为Rust包使用
在你的Cargo.toml
文件中。
[dependencies]
decasify = "0.5"
然后在你的项目中像这样使用包的函数和类型
use decasify::to_titlecase;
use decasify::{InputLocale, StyleGuide};
fn demo() {
let input = "ILIK SU VE İTEN RÜZGARLAR";
let output = to_titlecase(input, InputLocale::TR, None);
eprintln! {"{output}"};
let input = "title with a twist: a colon";
let output = to_titlecase(input, InputLocale::EN, Some(StyleGuide::DaringFireball));
eprintln! {"{output}"};
}
作为Lua Rock使用
在你的项目中依赖LuaRock或使用luarocks install decasify
进行安装
dependencies = {
"decasify"
}
然后导入并使用提供的函数
local decasify = require("decasify")
local input = "ILIK SU VE İTEN RÜZGARLAR"
local output = decasify.titlecase(input, "tr")
print(output)
input = "title with a twist: a colon"
output = decasify.titlecase(input, "en", "gruber")
print(output)
作为Python模块使用
在你的项目中依赖Python模块或使用pip install decasify
进行安装
[project]
dependencies = [
"decasify"
]
然后导入并使用提供的函数和类型类
from decasify import *
input = "ILIK SU VE İTEN RÜZGARLAR"
output = titlecase(input, InputLocale.TR)
print(output)
input = "title with a twist: a colon"
output = titlecase(input, InputLocale.EN, StyleGuide.DaringFireball)
print(output)
作为JavaScript (WASM) 模块使用
使用npm add decasify
在你的项目中依赖基于WASM的JavaScript模块
然后导入并使用提供的函数和类
import { titlecase, uppercase, lowercase, InputLocale, StyleGuide } from 'decasify';
var input = "ILIK SU VE İTEN RÜZGARLAR"
var output = titlecase(input, InputLocale.TR)
console.log(output)
var input = "title with a twist: a colon"
var output = titlecase(input, InputLocale.EN, StyleGuide.DaringFireball)
console.log(output)
依赖
~5–18MB
~247K SLoC