genderizr 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/lib/genderizr.rb +4 -3
  2. data/spec/genderizr_spec.rb +44 -43
  3. metadata +2 -2
data/lib/genderizr.rb CHANGED
@@ -3,7 +3,7 @@ require 'strscan'
3
3
 
4
4
  module Genderizr
5
5
 
6
- VERSION = '0.1.2'
6
+ VERSION = '0.1.4'
7
7
 
8
8
  module StringMethods
9
9
  def feminize; Genderizr.feminize(self); end
@@ -19,7 +19,7 @@ module Genderizr
19
19
 
20
20
 
21
21
  def genderize(string,turn_feminine)
22
- return "" if string.nil?
22
+ return if string.nil?
23
23
 
24
24
  result = ""
25
25
  s = StringScanner.new(string)
@@ -29,11 +29,12 @@ module Genderizr
29
29
  word = s.scan(/\w+|\W+/)
30
30
 
31
31
  result << word && next if word =~ /^\W+$/ # Short circuit if not a word
32
+ result << word && next if lookup[word.downcase].nil?
32
33
 
33
34
  capitalized = (word == word.capitalize)
34
35
  upcased = (word == word.upcase)
35
36
 
36
- genderized = (lookup[word.downcase].nil? ? word : lookup[word.downcase])
37
+ genderized = lookup[word.downcase]
37
38
  genderized = genderized.capitalize if capitalized
38
39
  genderized = genderized.upcase if upcased
39
40
  result << genderized
@@ -1,15 +1,17 @@
1
1
  $:.unshift(File.dirname(__FILE__) + '/../lib')
2
2
  require 'genderizr'
3
3
 
4
- MASCULINE = "king"
5
- FEMININE = "queen"
6
-
7
4
  describe Genderizr do
8
5
 
6
+ let(:feminine) { 'queen' }
7
+ let(:masculine) { 'king' }
8
+ let(:mr) { 'mr.' }
9
+ let(:ms) { 'ms.' }
10
+
9
11
  it "doesn't add methods to String by default" do
10
- FEMININE.should_not respond_to(:feminize)
11
- FEMININE.should_not respond_to(:genderize)
12
- FEMININE.should_not respond_to(:masculize)
12
+ feminine.should_not respond_to(:feminize)
13
+ feminine.should_not respond_to(:genderize)
14
+ feminine.should_not respond_to(:masculize)
13
15
  end
14
16
 
15
17
  it "handles a blank string" do
@@ -18,66 +20,65 @@ describe Genderizr do
18
20
  end
19
21
 
20
22
  it "handles a nil argument" do
21
- subject.feminize(nil).should eq ""
22
- subject.masculize(nil).should eq ""
23
+ subject.feminize(nil).should eq nil
24
+ subject.masculize(nil).should eq nil
23
25
  end
24
26
 
25
27
  it "switches genders of a masculine string when requested" do
26
- subject.genderize(MASCULINE,true).should eq FEMININE
28
+ subject.genderize(masculine,true).should eq feminine
27
29
  end
28
30
 
29
31
  it "doesn't switch genders of a masculine string when requested" do
30
- subject.genderize(MASCULINE,false).should eq MASCULINE
32
+ subject.genderize(masculine,false).should eq masculine
31
33
  end
32
34
 
33
35
  it "switches genders of a feminine string when requested" do
34
- subject.genderize(FEMININE,false).should eq MASCULINE
36
+ subject.genderize(feminine,false).should eq masculine
35
37
  end
36
38
 
37
39
  it "doesn't switch genders of a feminine string when requested" do
38
- subject.genderize(FEMININE,true).should eq FEMININE
40
+ subject.genderize(feminine,true).should eq feminine
39
41
  end
40
42
 
41
43
  it "does the same thing with the explicit and generic method calls" do
42
- subject.feminize(MASCULINE).should eq subject.genderize(MASCULINE,true)
43
- subject.feminize(FEMININE).should eq subject.genderize(FEMININE,true)
44
- subject.masculize(MASCULINE).should eq subject.genderize(MASCULINE,false)
45
- subject.masculize(FEMININE).should eq subject.genderize(FEMININE,false)
44
+ subject.feminize(masculine).should eq subject.genderize(masculine,true)
45
+ subject.feminize(feminine).should eq subject.genderize(feminine,true)
46
+ subject.masculize(masculine).should eq subject.genderize(masculine,false)
47
+ subject.masculize(feminine).should eq subject.genderize(feminine,false)
46
48
  end
47
49
 
48
50
  it "ignores punctuation" do
49
- subject.feminize("#{MASCULINE}.").should eq "#{FEMININE}."
50
- subject.feminize("#{MASCULINE}-").should eq "#{FEMININE}-"
51
- subject.feminize("!#{MASCULINE}-").should eq "!#{FEMININE}-"
51
+ subject.feminize("#{masculine}.").should eq "#{feminine}."
52
+ subject.feminize("#{masculine}-").should eq "#{feminine}-"
53
+ subject.feminize("!#{masculine}-").should eq "!#{feminine}-"
52
54
  end
53
55
 
54
56
  it "doesn't ignore punctuation in 'mr.' and 'ms.'" do
55
- mr = 'mr.'; ms = 'ms.'
56
57
  subject.feminize(mr).should eq ms
57
58
  subject.masculize(ms).should eq mr
58
59
  end
59
60
 
60
61
  it "preserves whitespace" do
61
- subject.feminize(" #{MASCULINE}").should eq " #{FEMININE}"
62
- subject.feminize(" #{MASCULINE}").should eq " #{FEMININE}"
63
- subject.feminize("\t#{MASCULINE}").should eq " #{FEMININE}"
62
+ subject.feminize(" #{masculine}").should eq " #{feminine}"
63
+ subject.feminize(" #{masculine}").should eq " #{feminine}"
64
+ subject.feminize("\t#{masculine}").should eq " #{feminine}"
64
65
  end
65
66
 
66
67
  it "preserves capitalization" do
67
- subject.feminize(MASCULINE.capitalize).should eq FEMININE.capitalize
68
+ subject.feminize(masculine.capitalize).should eq feminine.capitalize
68
69
  end
69
70
 
70
71
  it "preserves upcase" do
71
- subject.feminize(MASCULINE.upcase).should eq FEMININE.upcase
72
- subject.feminize(MASCULINE.upcase + " blark").should eq "#{FEMININE.upcase} blark"
72
+ subject.feminize(masculine.upcase).should eq feminine.upcase
73
+ subject.feminize(masculine.upcase + " blark").should eq "#{feminine.upcase} blark"
73
74
  end
74
75
 
75
76
  it "deals with multi-word strings" do
76
- subject.feminize("#{MASCULINE} #{MASCULINE} #{FEMININE}").should eq "#{FEMININE} #{FEMININE} #{FEMININE}"
77
+ subject.feminize("#{masculine} #{masculine} #{feminine}").should eq "#{feminine} #{feminine} #{feminine}"
77
78
  end
78
79
 
79
80
  it "doesn't change the gender of words with in words" do
80
- words_within_words = "#{MASCULINE}ified}"
81
+ words_within_words = "#{masculine}ified}"
81
82
  subject.feminize(words_within_words).should eq words_within_words
82
83
  end
83
84
 
@@ -87,24 +88,24 @@ describe Genderizr do
87
88
  subject.m2f_forms.should eq forms
88
89
  end
89
90
 
90
- end
91
91
 
92
- describe String do
92
+ describe Genderizr::StringMethods do
93
93
 
94
- before :all do
95
- Genderizr.monkey_patch(String)
96
- end
94
+ before :all do
95
+ Genderizr.monkey_patch(String)
96
+ end
97
97
 
98
- it "behaves the same" do
99
- FEMININE.feminize.should eq Genderizr.feminize(FEMININE)
100
- FEMININE.genderize(false).should eq Genderizr.genderize(FEMININE,false)
101
- FEMININE.genderize(true).should eq Genderizr.genderize(FEMININE,true)
102
- FEMININE.masculize.should eq Genderizr.masculize(FEMININE)
98
+ it "behaves the same" do
99
+ feminine.feminize.should eq Genderizr.feminize(feminine)
100
+ feminine.genderize(false).should eq Genderizr.genderize(feminine,false)
101
+ feminine.genderize(true).should eq Genderizr.genderize(feminine,true)
102
+ feminine.masculize.should eq Genderizr.masculize(feminine)
103
103
 
104
- MASCULINE.feminize.should eq Genderizr.feminize(MASCULINE)
105
- MASCULINE.genderize(true).should eq Genderizr.genderize(MASCULINE,true)
106
- MASCULINE.genderize(false).should eq Genderizr.genderize(MASCULINE,false)
107
- MASCULINE.masculize.should eq Genderizr.masculize(MASCULINE)
108
- end
104
+ masculine.feminize.should eq Genderizr.feminize(masculine)
105
+ masculine.genderize(true).should eq Genderizr.genderize(masculine,true)
106
+ masculine.genderize(false).should eq Genderizr.genderize(masculine,false)
107
+ masculine.masculize.should eq Genderizr.masculize(masculine)
108
+ end
109
109
 
110
+ end
110
111
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: genderizr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-03 00:00:00.000000000 Z
12
+ date: 2012-10-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: guard-rspec