词形变化

CI Documentation

一个 Swift 端口,移植了 Rails ActiveSupport 中的字符串词形变化功能,并针对以下语言环境进行了本地化,这些语言环境改编自 @davidcelis 的 Inflections

要求

用法

import Inflection

// Rails-style inflectors

"employee_salary".camelized() // "employeeSalary"
"employee_salary".camelized(uppercasingFirstLetter: true) // "EmployeeSalary"

"employee_salary".dasherized() // "employee-salary"

"customer_support".humanized() // "Customer Support"
"parent_id".humanized() // "Parent"

"Donald E. Knuth".parameterized() // "donald-e-knuth"
"^très|Jolie-- ".parameterized() // "tres-jolie"

"TheIncredibleHulk".titleized() // "The Incredible Hulk"
"spider-man: far from home".titleized() // "Spider Man: Far From Home"
"guardians_of_the_galaxy".titleized() // "Guardians Of The Galaxy"

"HTTPRequest".underscored() // "http_request"

// Pluralization and singularization

for singular in ["person", "tomato", "matrix", "octopus", "fish"] {
    let plural = singular.pluralized()
    print("\(singular)\(plural)\(plural.singularized())")
}
/*
Prints:
person → people → person
tomato → tomatoes → tomato
matrix → matrices → matrix
octopus → octopi → octopus
fish → fish → fish
*/

// Pass a `locale` argument to pluralize in other languages:

let 🇮🇹 = Locale(identifier: "it-IT")
let singular = "ragno" // 🕷
let plural = singular.pluralized(with: 🇮🇹) // 🕷🕷🕷
print("\(singular)\(plural)\(plural.singularized())")
/*
Prints:
ragno → ragni → ragno
*/

// You can also add pluralization rules,
// including irregular and uncountable words:

let inflector = Inflector.default
inflector.addPluralRule(#"^i(Pod|Pad)( Mini)?$"#, replacement: #"i$1s$2"#)
inflector.addIrregular(singular: "lol", plural: "lolz")
inflector.addUncountable("Herokai")

for singular in ["iPad Mini", "lol", "Herokai"] {
    print("\(singular)\(singular.pluralized)")
}
/*
Prints:
iPad Mini → iPads Mini
lol → lolz
Herokai → Herokai
*/

安装

Swift Package Manager

将 Inflection 包添加到你的 Package.swift 中的目标依赖项

// swift-tools-version:5.3
import PackageDescription

let package = Package(
  name: "YourProject",
  dependencies: [
    .package(
        url: "https://github.com/SwiftDoc/Inflection",
        from: "0.0.1"
    ),
  ]
)

然后运行 swift build 命令来构建你的项目。

许可证

MIT

联系方式

Mattt (@mattt)