一个 Swift 端口,移植了 Rails ActiveSupport 中的字符串词形变化功能,并针对以下语言环境进行了本地化,这些语言环境改编自 @davidcelis 的 Inflections
az
)en
)es
)fr
)it
)kk
)la
)nb
)pt-BR
)se
)tr
)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
*/
将 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)