genderizr 0.0.5 → 0.0.7
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/README.md +14 -6
- data/lib/genderizr.rb +111 -74
- metadata +2 -4
- data/lib/genderizr/rails.rb +0 -2
- data/lib/genderizr/version.rb +0 -1
data/README.md
CHANGED
@@ -4,11 +4,11 @@ A ruby gem to genderize strings. It owes a little to [JackDanger's feminizer](h
|
|
4
4
|
|
5
5
|
## Usage
|
6
6
|
|
7
|
-
`
|
7
|
+
`Genderizr.feminize(string)` replaces masculine words in *string* with their feminine counterparts
|
8
8
|
|
9
|
-
`
|
9
|
+
`Genderizr.masculize(string)` replaces feminine words
|
10
10
|
|
11
|
-
`
|
11
|
+
`Genderizr.genderize(string, turnFeminine)` Takes a masculine *string* and Feminizes it if *turnFeminine* evaluates to *true*, otherwise masculizes *string*.
|
12
12
|
|
13
13
|
### On its own
|
14
14
|
|
@@ -17,7 +17,7 @@ A ruby gem to genderize strings. It owes a little to [JackDanger's feminizer](h
|
|
17
17
|
1.9.3-p0 :001 > require 'genderizr'
|
18
18
|
=> true
|
19
19
|
|
20
|
-
1.9.3-p0 :002 > Genderizr.
|
20
|
+
1.9.3-p0 :002 > Genderizr.feminize("A man needs to keep his head up")
|
21
21
|
=> "A woman needs to keep her head up"
|
22
22
|
```
|
23
23
|
|
@@ -25,12 +25,20 @@ A ruby gem to genderize strings. It owes a little to [JackDanger's feminizer](h
|
|
25
25
|
|
26
26
|
Genderizr monkey-patches the String class... cause that's the Rails Way.
|
27
27
|
|
28
|
-
It adds `String#feminize`, `String#genderize(
|
28
|
+
It adds `String#feminize`, `String#genderize(turnFeminine)` and `String#masculize`
|
29
29
|
|
30
30
|
Now you can do cool stuff like
|
31
31
|
|
32
32
|
```ruby
|
33
33
|
# app/views/users/show.html.erb
|
34
34
|
|
35
|
-
<%= @user.name
|
35
|
+
<%= "#{@user.name} updated his status".genderize(@user.female?) %>
|
36
|
+
```
|
37
|
+
Produces
|
38
|
+
```
|
39
|
+
Dean updated his status.
|
40
|
+
```
|
41
|
+
or
|
42
|
+
```
|
43
|
+
Adrienne updated her status.
|
36
44
|
```
|
data/lib/genderizr.rb
CHANGED
@@ -1,97 +1,134 @@
|
|
1
|
-
|
1
|
+
# encoding: utf-8
|
2
2
|
require 'strscan'
|
3
3
|
|
4
4
|
module Genderizr
|
5
5
|
|
6
|
-
|
6
|
+
VERSION = "0.0.7"
|
7
7
|
|
8
|
-
def
|
9
|
-
|
8
|
+
def self.monkey_patch(mod)
|
9
|
+
mod.send(:include, Genderizr::InstanceMethods)
|
10
|
+
mod.send(:extend, Genderizr::Forms)
|
10
11
|
end
|
11
12
|
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
until s.eos? do
|
18
|
-
word = s.scan(/\w+|\W+/)
|
19
|
-
genderized = turn_feminine ? masculine_to_feminine[word] :
|
20
|
-
feminine_to_masculine[word]
|
21
|
-
result << (genderized.nil? ? word : genderized)
|
14
|
+
module Changers
|
15
|
+
|
16
|
+
def feminize(string)
|
17
|
+
genderize(string, true)
|
22
18
|
end
|
23
|
-
result
|
24
|
-
end
|
25
19
|
|
26
20
|
|
27
|
-
|
28
|
-
|
29
|
-
|
21
|
+
def genderize(string,turn_feminine)
|
22
|
+
return "" if string.nil?
|
23
|
+
lookup = turn_feminine ? masculine_to_feminine : feminine_to_masculine
|
24
|
+
result = ""
|
25
|
+
s = StringScanner.new(string)
|
26
|
+
until s.eos? do
|
27
|
+
word = s.scan(/\w+|\W+/)
|
28
|
+
result << (lookup[word].nil? ? word : lookup[word])
|
29
|
+
end
|
30
|
+
result
|
31
|
+
end
|
30
32
|
|
31
33
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
34
|
+
def masculize(string)
|
35
|
+
genderize(string, false)
|
36
|
+
end
|
37
|
+
|
36
38
|
end
|
39
|
+
extend Genderizr::Changers
|
40
|
+
|
41
|
+
|
42
|
+
module Forms
|
43
|
+
|
44
|
+
def m2f_forms
|
45
|
+
@m2f_forms ||= masculine_to_feminine
|
46
|
+
end
|
47
|
+
|
37
48
|
|
49
|
+
def m2f_forms=(hash)
|
50
|
+
@f2m_forms = hash.invert
|
51
|
+
@m2f_forms = hash
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def feminine_to_masculine
|
57
|
+
@f2m_forms ||= m2f_forms.invert
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
def default_m2f_forms
|
62
|
+
{
|
63
|
+
'♂' => '♀',
|
64
|
+
'⚨' => '♀',
|
65
|
+
'⚩' => '♀',
|
66
|
+
'⚣' => '⚢',
|
67
|
+
'boy' => 'girl',
|
68
|
+
'boyish' => 'girlish',
|
69
|
+
'boys' => 'girls',
|
70
|
+
'brother' => 'sister',
|
71
|
+
'brothers' => 'sisters',
|
72
|
+
'cowboy' => 'cowgirl',
|
73
|
+
'cowboys' => 'cowgirls',
|
74
|
+
'craftsman' => 'craftswoman',
|
75
|
+
'dad' => 'mom',
|
76
|
+
'daddy' => 'mommy',
|
77
|
+
'dick' => 'pussy',
|
78
|
+
'dude' => 'lady',
|
79
|
+
'dudes' => 'ladies',
|
80
|
+
'ex-wife' => 'ex-husband',
|
81
|
+
'father' => 'mother',
|
82
|
+
'fathers' => 'mothers',
|
83
|
+
'gentleman' => 'lady',
|
84
|
+
'gentlemen' => 'ladies',
|
85
|
+
'guy' => 'gal',
|
86
|
+
'guys' => 'gals',
|
87
|
+
'he' => 'she',
|
88
|
+
'him' => 'her',
|
89
|
+
'himself' => 'herself',
|
90
|
+
'his' => 'her',
|
91
|
+
'king' => 'queen',
|
92
|
+
'kings' => 'queens',
|
93
|
+
'male' => 'female',
|
94
|
+
'man' => 'woman',
|
95
|
+
'manhood' => 'womanhood',
|
96
|
+
'manlier' => 'womanlier',
|
97
|
+
'manliest' => 'womanliest',
|
98
|
+
'manliness' => 'womanliness',
|
99
|
+
'manly' => 'womanly',
|
100
|
+
'masculine' => 'feminine',
|
101
|
+
'masculinity' => 'femininity',
|
102
|
+
'men' => 'women',
|
103
|
+
'mister' => 'miss', # Careful here going from feminine to masculine
|
104
|
+
'mr' => 'ms',
|
105
|
+
'mr.' => 'ms.',
|
106
|
+
'nobleman' => 'noblewoman',
|
107
|
+
'patriarch' => 'matriarch',
|
108
|
+
'prince' => 'princess',
|
109
|
+
'princes' => 'princesses',
|
110
|
+
'waited' => 'waitressed',
|
111
|
+
'waiter' => 'waitress'
|
112
|
+
}
|
113
|
+
end
|
38
114
|
|
39
|
-
private
|
40
115
|
|
41
|
-
|
42
|
-
|
116
|
+
def masculine_to_feminine
|
117
|
+
@m2f_forms ||= default_m2f_forms
|
118
|
+
end
|
119
|
+
|
43
120
|
end
|
121
|
+
extend Genderizr::Forms
|
44
122
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
'brother' => 'sister',
|
51
|
-
'brothers' => 'sisters',
|
52
|
-
'cowboy' => 'cowgirl',
|
53
|
-
'cowboys' => 'cowgirls',
|
54
|
-
'craftsman' => 'craftswoman',
|
55
|
-
'dad' => 'mom',
|
56
|
-
'daddy' => 'mommy',
|
57
|
-
'dick' => 'pussy',
|
58
|
-
'dude' => 'lady',
|
59
|
-
'dudes' => 'ladies',
|
60
|
-
'ex-wife' => 'ex-husband',
|
61
|
-
'father' => 'mother',
|
62
|
-
'fathers' => 'mothers',
|
63
|
-
'gentleman' => 'lady',
|
64
|
-
'gentlemen' => 'ladies',
|
65
|
-
'guy' => 'gal',
|
66
|
-
'guys' => 'gals',
|
67
|
-
'he' => 'she',
|
68
|
-
'him' => 'her',
|
69
|
-
'himself' => 'herself',
|
70
|
-
'his' => 'her',
|
71
|
-
'king' => 'queen',
|
72
|
-
'kings' => 'queens',
|
73
|
-
'male' => 'female',
|
74
|
-
'man' => 'woman',
|
75
|
-
'manhood' => 'womanhood',
|
76
|
-
'manlier' => 'womanlier',
|
77
|
-
'manliest' => 'womanliest',
|
78
|
-
'manliness' => 'womanliness',
|
79
|
-
'manly' => 'womanly',
|
80
|
-
'masculine' => 'feminine',
|
81
|
-
'masculinity' => 'femininity',
|
82
|
-
'men' => 'women',
|
83
|
-
'mr' => 'ms',
|
84
|
-
'mr.' => 'ms.',
|
85
|
-
'nobleman' => 'noblewoman',
|
86
|
-
'patriarch' => 'matriarch',
|
87
|
-
'prince' => 'princess',
|
88
|
-
'princes' => 'princesses',
|
89
|
-
'waitress' => 'waiter',
|
90
|
-
'waitressed' => 'waited'
|
91
|
-
}
|
123
|
+
|
124
|
+
module InstanceMethods
|
125
|
+
def feminize; Genderizr.feminize(self); end
|
126
|
+
def genderize(turn_feminine); Genderizr.genderize(self,turn_feminine); end
|
127
|
+
def masculize; Genderizr.masculize(self); end
|
92
128
|
end
|
129
|
+
|
93
130
|
end
|
94
131
|
|
95
|
-
if defined?(Rails)
|
96
|
-
|
132
|
+
if defined?(Rails)
|
133
|
+
Genderizr.monkey_patch(String)
|
97
134
|
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.0.
|
4
|
+
version: 0.0.7
|
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-05-
|
12
|
+
date: 2012-05-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -35,8 +35,6 @@ extensions: []
|
|
35
35
|
extra_rdoc_files: []
|
36
36
|
files:
|
37
37
|
- README.md
|
38
|
-
- lib/genderizr/rails.rb
|
39
|
-
- lib/genderizr/version.rb
|
40
38
|
- lib/genderizr.rb
|
41
39
|
homepage: https://github.com/brundage/genderizr
|
42
40
|
licenses: []
|
data/lib/genderizr/rails.rb
DELETED
data/lib/genderizr/version.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
module Genderizr; VERSION = "0.0.5"; end
|