Class Inflector

java.lang.Object
net.thucydides.core.util.Inflector

public class Inflector extends Object
Transforms words to singular, plural, humanized (human readable), underscore, camel case, or ordinal form. This is inspired by the Inflector class in Ruby on Rails, which is distributed under the Rails license.
Author:
Randall Hauch
  • Constructor Details

    • Inflector

      public Inflector()
  • Method Details

    • getInstance

      public static Inflector getInstance()
    • inflection

      public static Inflector inflection()
    • of

      public Inflection of(String word)
    • of

      public MultipleInflection of(int count)
    • pluralize

      public String pluralize(Object word)
      Returns the plural form of the word in the string. Examples:
         inflector.pluralize("post")               #=> "posts"
         inflector.pluralize("octopus")            #=> "octopi"
         inflector.pluralize("sheep")              #=> "sheep"
         inflector.pluralize("words")              #=> "words"
         inflector.pluralize("the blue mailman")   #=> "the blue mailmen"
         inflector.pluralize("CamelOctopus")       #=> "CamelOctopi"
       
      Note that if the Object.toString() is called on the supplied object, so this method works for non-strings, too.
      Parameters:
      word - the word that is to be pluralized.
      Returns:
      the pluralized form of the word, or the word itself if it could not be pluralized
      See Also:
    • pluralize

      public String pluralize(Object word, int count)
    • singularize

      public String singularize(Object word)
      Returns the singular form of the word in the string. Examples:
         inflector.singularize("posts")             #=> "post"
         inflector.singularize("octopi")            #=> "octopus"
         inflector.singularize("sheep")             #=> "sheep"
         inflector.singularize("words")             #=> "word"
         inflector.singularize("the blue mailmen")  #=> "the blue mailman"
         inflector.singularize("CamelOctopi")       #=> "CamelOctopus"
       
      Note that if the Object.toString() is called on the supplied object, so this method works for non-strings, too.
      Parameters:
      word - the word that is to be pluralized.
      Returns:
      the pluralized form of the word, or the word itself if it could not be pluralized
      See Also:
    • capitalize

      public String capitalize(String words)
      Returns a copy of the input with the first character converted to uppercase and the remainder to lowercase.
      Parameters:
      words - the word to be capitalized
      Returns:
      the string with the first character capitalized and the remaining characters lowercased
    • humanize

      public String humanize(String lowerCaseAndUnderscoredWords, String... removableTokens)
      Capitalizes the first word and turns underscores into spaces and strips trailing "_id" and any supplied removable tokens. Like titleCase(String, String[]), this is meant for creating pretty output. Examples:
         inflector.humanize("employee_salary")       #=> "Employee salary"
         inflector.humanize("author_id")             #=> "Author"
       
      Parameters:
      lowerCaseAndUnderscoredWords - the input to be humanized
      removableTokens - optional array of tokens that are to be removed
      Returns:
      the humanized string
      See Also:
      • titleCase(String, String[])
    • underscore

      public String underscore(String camelCaseWord, char... delimiterChars)
      Makes an underscored form from the expression in the string method. Also changes any characters that match the supplied delimiters into underscore. Examples:
         inflector.underscore("activeRecord")     #=> "active_record"
         inflector.underscore("ActiveRecord")     #=> "active_record"
         inflector.underscore("firstName")        #=> "first_name"
         inflector.underscore("FirstName")        #=> "first_name"
         inflector.underscore("name")             #=> "name"
         inflector.underscore("The.firstName")    #=> "the_first_name"
       
      Parameters:
      camelCaseWord - the camel-cased word that is to be converted;
      delimiterChars - optional characters that are used to delimit word boundaries (beyond capitalization)
      Returns:
      a lower-cased version of the input, with separate words delimited by the underscore character.
    • kebabCase

      public String kebabCase(String camelCaseWord, char... delimiterChars)
      Makes an kebab-cased expression of a string method.
      Parameters:
      camelCaseWord - the camel-cased word that is to be converted;
      delimiterChars - optional characters that are used to delimit word boundaries (beyond capitalization)
      Returns:
      a kebab-cased version of the input, with separate words delimited by the hyphen character.
    • initialize

      protected void initialize()