Standalone English pluralization, singularization, and string inflection
gem install philiprehberger-pluralizeStandalone English pluralization, singularization, and string inflection
Add to your Gemfile:
gem "philiprehberger-pluralize"
Or install directly:
gem install philiprehberger-pluralize
require "philiprehberger/pluralize"
Philiprehberger::Pluralize.plural('person') # => "people"
Philiprehberger::Pluralize.singular('people') # => "person"
Philiprehberger::Pluralize.count(5, 'item') # => "5 items"
Philiprehberger::Pluralize.possessive('dog') # => "dog's"
Philiprehberger::Pluralize.possessive('dogs') # => "dogs'"
Philiprehberger::Pluralize.possessive('James') # => "James'"
Philiprehberger::Pluralize.possessive('children') # => "children's"
Philiprehberger::Pluralize.plural('mother-in-law') # => "mothers-in-law"
Philiprehberger::Pluralize.plural('well-being') # => "well-beings"
Philiprehberger::Pluralize.ordinal(1) # => "first"
Philiprehberger::Pluralize.ordinal(12) # => "twelfth"
Philiprehberger::Pluralize.ordinal(21) # => "twenty-first"
Philiprehberger::Pluralize.plural?('cats') # => true
Philiprehberger::Pluralize.plural?('cat') # => false
Philiprehberger::Pluralize.plural?('people') # => true
Philiprehberger::Pluralize.count(5, 'item', style: :words) # => "five items"
Philiprehberger::Pluralize.count(1, 'person', style: :words) # => "one person"
Philiprehberger::Pluralize.count(20, 'item', style: :words) # => "20 items"
Philiprehberger::Pluralize.pluralize(1, 'apple') # => "1 apple"
Philiprehberger::Pluralize.pluralize(3, 'apple') # => "3 apples"
Philiprehberger::Pluralize.pluralize(3, 'octopus', 'octopi') # => "3 octopi"
Philiprehberger::Pluralize.pluralize(2, 'person') # => "2 people"
Philiprehberger::Pluralize.capitalize_and_pluralize('cat') # => "Cats"
Philiprehberger::Pluralize.capitalize_and_pluralize('person') # => "People"
Philiprehberger::Pluralize.capitalize_and_pluralize('child') # => "Children"
Philiprehberger::Pluralize.uncountable?('sheep') # => true
Philiprehberger::Pluralize.uncountable?('equipment') # => true
Philiprehberger::Pluralize.uncountable?('cat') # => false
Philiprehberger::Pluralize.indefinite_article('apple') # => "an"
Philiprehberger::Pluralize.indefinite_article('university') # => "a"
Philiprehberger::Pluralize.indefinite_article('hour') # => "an"
Philiprehberger::Pluralize.indefinite_article('Apple', capitalize: true) # => "An"
Philiprehberger::Pluralize.irregular('radius', 'radii')
Philiprehberger::Pluralize.plural('radius') # => "radii"
Philiprehberger::Pluralize.singular('radii') # => "radius"
Philiprehberger::Pluralize.irregulars # => {"radius"=>"radii"}
Philiprehberger::Pluralize.uncountable('equipment')
Philiprehberger::Pluralize.plural('equipment') # => "equipment"
Philiprehberger::Pluralize.uncountables # => ["equipment"]
Philiprehberger::Pluralize.camel_case('hello_world') # => "HelloWorld"
Philiprehberger::Pluralize.snake_case('HelloWorld') # => "hello_world"
Philiprehberger::Pluralize.titleize('hello_world') # => "Hello World"
Philiprehberger::Pluralize.humanize('user_id') # => "User"
| Method | Description |
|---|---|
Pluralize.plural(word) | Return the plural form of a word (supports hyphenated compounds) |
Pluralize.singular(word) | Return the singular form of a word |
Pluralize.possessive(word) | Generate the possessive form of a word |
Pluralize.plural?(word) | Return true if the word appears to be plural |
Pluralize.ordinal(n) | Convert a number (1-100) to its ordinal word |
Pluralize.count(n, word, style:) | Format a count with singular/plural word (:numeric or :words style) |
Pluralize.pluralize(n, singular, plural = nil) | Rails-style: format a count with a required singular and optional explicit plural |
Pluralize.capitalize_and_pluralize(word) | Capitalize a word and return its plural form |
.indefinite_article(word, capitalize: false) | Return "a" or "an" for word, with silent-h and consonant-y-vowel handling |
Pluralize.uncountable?(word) | Return true if the word is uncountable (built-in or custom) |
Pluralize.irregular(singular, plural) | Register a custom irregular singular/plural pair |
Pluralize.uncountable(word) | Register a word as uncountable |
Pluralize.irregulars | List custom-registered irregular pairs (frozen copy) |
Pluralize.uncountables | List custom-registered uncountable words (frozen copy) |
Pluralize.camel_case(str) | Convert an underscored or hyphenated string to PascalCase |
Pluralize.snake_case(str) | Convert a PascalCase or camelCase string to snake_case |
Pluralize.titleize(str) | Convert an underscored or hyphenated string to Title Case |
Pluralize.humanize(str) | Convert an underscored string to a human-readable form |
Pluralize.reset! | Reset all custom irregular and uncountable rules |
bundle install
bundle exec rspec
bundle exec rubocop
If you find this project useful: