Module: Genderizr

Extended by:
Genderizr
Included in:
Genderizr
Defined in:
lib/genderizr.rb

Defined Under Namespace

Modules: StringMethods

Constant Summary collapse

VERSION =
'0.1.5'

Instance Method Summary collapse

Instance Method Details

#feminize(string) ⇒ Object



16
17
18
# File 'lib/genderizr.rb', line 16

def feminize(string)
  genderize(string, true)
end

#genderize(string, turn_feminine) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/genderizr.rb', line 21

def genderize(string,turn_feminine)
  return if string.nil?

  result = ""
  s = StringScanner.new(string)
  lookup = turn_feminine ? masculine_to_feminine : feminine_to_masculine

  until s.eos? do
    word = s.scan(/\w+|\W+/)

    result << word && next if word =~ /^\W+$/  # Short circuit if not a word
    result << word && next if lookup[word.downcase].nil?

    capitalized = (word == word.capitalize)
    upcased     = (word == word.upcase)

    genderized = lookup[word.downcase]
    genderized = genderized.capitalize if capitalized
    genderized = genderized.upcase if upcased
    result << genderized
  end
  result
end

#m2f_formsObject



46
47
48
# File 'lib/genderizr.rb', line 46

def m2f_forms
  @m2f_forms ||= masculine_to_feminine
end

#m2f_forms=(hash) ⇒ Object



51
52
53
54
# File 'lib/genderizr.rb', line 51

def m2f_forms=(hash)
  @f2m_forms = hash.invert
  @m2f_forms = hash
end

#masculize(string) ⇒ Object



57
58
59
# File 'lib/genderizr.rb', line 57

def masculize(string)
  genderize(string, false)
end

#monkey_patch(mod) ⇒ Object



62
63
64
# File 'lib/genderizr.rb', line 62

def monkey_patch(mod)
  mod.send(:include, Genderizr::StringMethods)
end