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.
- 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
|