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 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
- `feminize_string(string)` replaces masculine words in `string` with their feminine counterparts
7
+ `Genderizr.feminize(string)` replaces masculine words in *string* with their feminine counterparts
8
8
 
9
- `masculize_string(string)` replaces feminine words
9
+ `Genderizr.masculize(string)` replaces feminine words
10
10
 
11
- `genderize_string(string, turn_feminine)` Feminizes `string` if `turn_feminine` evaluates to `true`, masculizes `string` otherwise.
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.feminize_string("A man needs to keep his head up")
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(turn_feminine)` and `String#masculize`
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 %> <%= "updated his status".genderize(@user.female?) %>
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
- require 'genderizr/version'
1
+ # encoding: utf-8
2
2
  require 'strscan'
3
3
 
4
4
  module Genderizr
5
5
 
6
- extend self
6
+ VERSION = "0.0.7"
7
7
 
8
- def feminize(string)
9
- genderize(string, true)
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
- def genderize(string,turn_feminine)
14
- return "" if string.nil?
15
- result = ""
16
- s = StringScanner.new(string)
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
- def masculize(string)
28
- genderize(string, false)
29
- end
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
- module StringMethods
33
- def feminize; Genderizr.feminize(self); end
34
- def genderize(turn_feminine); Genderizr.genderize(self,turn_feminine); end
35
- def masculize; Genderizr.masculize(self); end
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
- def feminine_to_masculine
42
- masculine_to_feminine.invert
116
+ def masculine_to_feminine
117
+ @m2f_forms ||= default_m2f_forms
118
+ end
119
+
43
120
  end
121
+ extend Genderizr::Forms
44
122
 
45
- def masculine_to_feminine
46
- {
47
- 'boy' => 'girl',
48
- 'boyish' => 'girlish',
49
- 'boys' => 'girls',
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) && Rails::VERSION::MAJOR >= 3
96
- require 'genderizr/rails'
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.5
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-20 00:00:00.000000000 Z
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: []
@@ -1,2 +0,0 @@
1
- require 'genderizr'
2
- class String; include Genderizr::StringMethods; end
@@ -1 +0,0 @@
1
- module Genderizr; VERSION = "0.0.5"; end