genderizr 0.1.2 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
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