Class Inflector

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

public class Inflector
extends java.lang.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
  • Nested Class Summary

    Nested Classes
    Modifier and Type Class Description
    protected static class  Inflector.Rule  
  • Constructor Summary

    Constructors
    Constructor Description
    Inflector()  
  • Method Summary

    Modifier and Type Method Description
    java.lang.String capitalize​(java.lang.String words)
    Returns a copy of the input with the first character converted to uppercase and the remainder to lowercase.
    static Inflector getInstance()  
    java.lang.String humanize​(java.lang.String lowerCaseAndUnderscoredWords, java.lang.String... removableTokens)
    Capitalizes the first word and turns underscores into spaces and strips trailing "_id" and any supplied removable tokens.
    static Inflector inflection()  
    protected void initialize()  
    java.lang.String kebabCase​(java.lang.String camelCaseWord, char... delimiterChars)
    Makes an kebab-cased expression of a string method.
    MultipleInflection of​(int count)  
    Inflection of​(java.lang.String word)  
    java.lang.String pluralize​(java.lang.Object word)
    Returns the plural form of the word in the string.
    java.lang.String pluralize​(java.lang.Object word, int count)  
    java.lang.String singularize​(java.lang.Object word)
    Returns the singular form of the word in the string.
    java.lang.String underscore​(java.lang.String camelCaseWord, char... delimiterChars)
    Makes an underscored form from the expression in the string method.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • Inflector

      public Inflector()
  • Method Details

    • getInstance

      public static Inflector getInstance()
    • inflection

      public static Inflector inflection()
    • of

      public Inflection of​(java.lang.String word)
    • of

      public MultipleInflection of​(int count)
    • pluralize

      public java.lang.String pluralize​(java.lang.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:
      singularize(Object)
    • pluralize

      public java.lang.String pluralize​(java.lang.Object word, int count)
    • singularize

      public java.lang.String singularize​(java.lang.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:
      pluralize(Object)
    • capitalize

      public java.lang.String capitalize​(java.lang.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 java.lang.String humanize​(java.lang.String lowerCaseAndUnderscoredWords, java.lang.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 java.lang.String underscore​(java.lang.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 java.lang.String kebabCase​(java.lang.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()