gobuffalo/flect
GitHub: gobuffalo/flect
Flect 是一个 Go 语言英语名词词形变化引擎,为 Web 开发中的单复数转换、命名格式化等字符串处理需求提供模块化且可自定义的解决方案。
Stars: 104 | Forks: 34
# Flect
[](https://pkg.go.dev/github.com/gobuffalo/flect)
[](https://github.com/gobuffalo/flect/actions/workflows/standard-go-test.yml)
[](https://goreportcard.com/report/github.com/gobuffalo/flect)
这是一个全新的词形变化引擎,旨在取代 [https://github.com/markbates/inflect](https://github.com/markbates/inflect)。它的设计更加模块化、更具可读性,并且比原版更容易修复问题。
Flect 提供了诸如 `Singularize` 和 `Pluralize` 等针对英语名词的词形变化功能,
以及诸如 `Camelize`、`Capitalize`、
`Humanize` 等文本实用功能。
由于英语名词词形变化具有高度的灵活性与复杂性,几乎
不可能涵盖所有的例外情况(例如相同/不规则复数形式)。
基于此原因,以及 Flect 的主要目的(即让使用 Go 开发 Web 应用变得
更加容易),Flect 在其自身规则上存在一定的局限性。
* 它涵盖了常规规则(在词尾添加 -s 或 -es)
* 它涵盖了常见的不规则规则(例如 -is 变为 -es、-f 变为 -ves 等)
* https://en.wiktionary.org/wiki/Appendix:English_irregular_nouns#Rules
* 它涵盖了常见的不规则单词(例如 children、men 等)
* 如果一个单词像 milk 或 time 一样既可数又不可数,它将被
视为可数。
* 如果一个单词有多种复数形式,这意味着它至少有一种
不规则复数形式,我们会尽量找出最常用的一种。(选定的复数
可能让你觉得奇怪,如有异议,请随时带上数据支持提交一个 issue)
* 例如,我们选择了 "stadiums" 而不是 "stadia",选择了 "dwarfs" 而不是 "dwarves"
* 我们使用 en.wiktionary.org、britannica.com 和
trends.google.com 中的一个或多个组合来检查近期的使用趋势。
* 然而,我们无法涵盖所有情况,其中某些情况可能不适用于
您的场景。您可以使用 `InsertPlural()`、`InsertSingular()` 或
`LoadInfrections()` 等函数来覆盖默认设置。
* 如果在您的应用根目录下有一个名为 `inflections.json` 的 JSON 文件,
该文件将被自动加载为您的自定义词形变化字典。
## 安装说明
```
$ go get github.com/gobuffalo/flect
```
## 包
### `github.com/gobuffalo/flect`
`github.com/gobuffalo/flect` 包含“基本”的词形变化工具,例如复数化、单数化等...
#### `Ident` 类型
除了接收 `string` 并返回 `string` 的实用方法外,还有一个 `Ident` 类型可用于创建全新的、自定义的词形变化规则。
`Ident` 类型包含两个字段。
* `Original` - 这是用于创建 `Ident` 的原始 `string`
* `Parts` - 这是一个 `[]string`,表示字符串的所有“部分”,这些部分被拆分开来,使得这些片段更易于处理
使用 `Ident` 创建新词形变化规则的示例可以在 `github.com/gobuffalo/flect/name` 包中找到。
### `github.com/gobuffalo/flect/name`
`github.com/gobuffalo/flect/name` 包含更多“业务”相关的词形变化规则,例如创建专有名称、表名等...
标签:EVTX分析, 日志审计