class Object

Public Instance Methods

genderify(genderable) click to toggle source

Genderifies string. This is done by replacing every occurence of (x|y) with either left (x) or right part (y) of it based on the gender provided as argument. If argument of function is :f, ‘f’, :F, ‘F’, 1, ‘1’, :female or ‘female’ it will pick the right side. Anything else, including nil, will use the left side as replacement. Hm, is this sexist?

Argument can also be an object that responds to ‘gender’ call. Returning value of such function will be applied to stated rules above.

Example:

>> "About (him|her)".genderify(:f) 
=> "About her"
# File lib/genderify/string_ext.rb, line 19
def genderify(genderable)
  gender = genderable.respond_to?(:gender) ? genderable.gender : genderable
  gsub(/\((.+?)\|(.+?)\)/) do
    case gender
    when :f, 'f', :F, 'F', 1, '1', :female, 'female'
      $2
    else
      $1
    end
  end
end