#string #style #guide #python-module #title-case #locale #command-line-tool

bin+lib decasify

一个命令行工具和库,用于根据地区特定的风格指南将字符串转换为标题大小写,包括对土耳其语的支持。

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) 中排名

Download history 120/week @ 2024-04-29 184/week @ 2024-05-20 10/week @ 2024-05-27 7/week @ 2024-06-03 2/week @ 2024-06-10 23/week @ 2024-07-01 445/week @ 2024-07-08 187/week @ 2024-07-15 128/week @ 2024-07-22 100/week @ 2024-07-29 118/week @ 2024-08-12

每月 346 次下载

LGPL-3.0-only

41KB
697

decasify

Rust Test Status Rust Lint Status Flake Run Status Lua Lint Status Lua Test Status
GitHub tag (latest) Crates.io (latest) LuaRocks (latest) PyPi (latest) NPM Version

一个命令行工具,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