genderizr 0.1.2 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/genderizr.rb +4 -3
- data/spec/genderizr_spec.rb +44 -43
- 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.
|
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
|
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 =
|
37
|
+
genderized = lookup[word.downcase]
|
37
38
|
genderized = genderized.capitalize if capitalized
|
38
39
|
genderized = genderized.upcase if upcased
|
39
40
|
result << genderized
|
data/spec/genderizr_spec.rb
CHANGED
@@ -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
|
-
|
11
|
-
|
12
|
-
|
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(
|
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(
|
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(
|
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(
|
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(
|
43
|
-
subject.feminize(
|
44
|
-
subject.masculize(
|
45
|
-
subject.masculize(
|
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("#{
|
50
|
-
subject.feminize("#{
|
51
|
-
subject.feminize("!#{
|
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(" #{
|
62
|
-
subject.feminize(" #{
|
63
|
-
subject.feminize("\t#{
|
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(
|
68
|
+
subject.feminize(masculine.capitalize).should eq feminine.capitalize
|
68
69
|
end
|
69
70
|
|
70
71
|
it "preserves upcase" do
|
71
|
-
subject.feminize(
|
72
|
-
subject.feminize(
|
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("#{
|
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 = "#{
|
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
|
92
|
+
describe Genderizr::StringMethods do
|
93
93
|
|
94
|
-
|
95
|
-
|
96
|
-
|
94
|
+
before :all do
|
95
|
+
Genderizr.monkey_patch(String)
|
96
|
+
end
|
97
97
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
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
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
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.
|
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-
|
12
|
+
date: 2012-10-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: guard-rspec
|