GrammaticalNumber
Turning singular words to plural can be very hard in some spoken languages, while other languages have simple rules.
GrammaticalNumber
is heavily inspired by ActiveSupport::Inflector
known from the Ruby on Rails web framework.
Usage
Turn singular words to plural
"person".pluralized() // people
"center".pluralized() // centers
"sheep".pluralized() // sheep
"knife".pluralized() // knives
"mouse".pluralized() // mice
"money".pluralized() // money
"axis".pluralized() // axes
"item".pluralized() // items
"status".pluralized() // statuses
"fox".pluralized() // foxes
"move".pluralized() // moves
"tooth".pluralized() // teeth
"foxes".pluralized() // foxes
"millennium".pluralized() // millennia
"child".pluralized() // children
"matrix".pluralized() // matrices
"man".pluralized() // men
"ox".pluralized() // oxen
"radius".pluralized() // radii
"grandchild".pluralized() // grandchildren
Turn plural words to singular
"children".singularized() // child
"tables".singularized() // table
"computers".singularized() // computer
"mice".singularized() // mouse
"teeth".singularized() // tooth
"axes".singularized() // axis
"women".singularized() // woman
"grandchildren".singularized() // grandchild
Case Sensitivity
GrammaticalNumber
will try to match the letter casing of your input word.
Lowercased, uppercased and capitalized words are supported.
"tooth".pluralized() // teeth
"TOOTH".pluralized() // TOOTH
"Tooth".pluralized() // Teeth
Add count to words
Prepends the pluralized String
with count
.
If the count
is 0
, the singular word will be used.
"child".pluralized(count: 0) // 0 children
"child".pluralized(count: 1) // 1 child
"child".pluralized(count: 3) // 3 children
"knife".pluralized(count: 0) // 0 knives
"knife".pluralized(count: 1) // 1 knife
"knife".pluralized(count: 3) // 3 knives
"sheep".pluralized(count: 0) // 0 sheep
"sheep".pluralized(count: 1) // 1 sheep
"sheep".pluralized(count: 3) // 3 sheep
Define Custom Rules
Uncountable Rule
let rule: GrammaticalNumberRule = .uncountable("money")
money
will never change.
Irregular Rule: Singular from plural
let rule: GrammaticalNumberRule = .irregular("tooth", "teeth")
Turns tooth
to teeth
when used with pluralized()
.
Turns teeth
to tooth
when used with singularized()
.
Plural Rule: Plural from singular with regular expression
let rule: GrammaticalNumberRule = .plural(#"^(m|l)ousequot;#, #"$1ice"#)
mouse
becomes mice
and louse
becomes lice
.
Singular Rule: Singular from plural with regular expression
let rule: GrammaticalNumberRule = .singular(#"(matr)icesquot;#, #"$1ix"#)
Turns matrices
to matrix
.
Apply rule, so it becomes available
GrammaticalNumberRule.add(rule)
Support other languages
In order to support other languages, pass the language
parameter to your custom rules.
Call .pluralized(language: yourLanguage)
with the same language
value — like so: .pluralized(language: "tr")
Example for the turkish language (tr
)
GrammaticalNumberRule.add(.plural(#"([aoıu][^aoıueöiü]{0,6})quot;#, #"$1lar"#), language: "tr")
GrammaticalNumberRule.add(.plural(#"([eöiü][^aoıueöiü]{0,6})quot;#, #"$1ler"#), language: "tr")
GrammaticalNumberRule.add(.singular(#"l[ae]rquot;#, #""#), language: "tr")
"kitap".pluralized(language: "tr") // kitaplar
"yemek".pluralized(language: "tr") // yemekler
Other Projects
- BinaryKit — BinaryKit helps you to break down binary data into bits and bytes and easily access specific parts.
- Clippy — Clippy from Microsoft Office is back and runs on macOS! Written in Swift.
- HackMan — Stop writing boilerplate code yourself. Let hackman do it for you via the command line.
- ISO8859 — Convert ISO8859 1-16 Encoded Text to String in Swift. Supports iOS, tvOS, watchOS and macOS.
- SpriteMap — SpriteMap helps you to extract sprites out of a sprite map. Written in Swift.
- StringCase — Converts String to lowerCamelCase, UpperCamelCase and snake_case. Tested and written in Swift.
- TinyConsole — TinyConsole is a micro-console that can help you log and display information inside an iOS application, where having a connection to a development computer is not possible.
License
GrammaticalNumber is released under the MIT License.
GrammaticalNumber
Turning singular words to plural can be very hard in some spoken languages, while other languages have simple rules.
GrammaticalNumber
is heavily inspired byActiveSupport::Inflector
known from the Ruby on Rails web framework.Usage
Turn singular words to plural
Turn plural words to singular
Case Sensitivity
GrammaticalNumber
will try to match the letter casing of your input word. Lowercased, uppercased and capitalized words are supported.Add count to words
Prepends the pluralized
String
withcount
. If thecount
is0
, the singular word will be used.Define Custom Rules
Uncountable Rule
money
will never change.Irregular Rule: Singular from plural
Turns
tooth
toteeth
when used withpluralized()
. Turnsteeth
totooth
when used withsingularized()
.Plural Rule: Plural from singular with regular expression
mouse
becomesmice
andlouse
becomeslice
.Singular Rule: Singular from plural with regular expression
Turns
matrices
tomatrix
.Apply rule, so it becomes available
Support other languages
In order to support other languages, pass the
language
parameter to your custom rules. Call.pluralized(language: yourLanguage)
with the samelanguage
value — like so:.pluralized(language: "tr")
Example for the turkish language (
tr
)Contact
Other Projects
License
GrammaticalNumber is released under the MIT License.