genderify 0.0.1 → 0.0.2
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 +8 -0
- data/lib/genderify/string_ext.rb +10 -5
- data/lib/genderify/version.rb +1 -1
- data/test/string_ext_test.rb +8 -3
- metadata +1 -1
data/README.md
CHANGED
@@ -10,6 +10,14 @@ Genderify Strings using this simple syntax:
|
|
10
10
|
=> "He recommended his own book"
|
11
11
|
```
|
12
12
|
|
13
|
+
You can also pass an object that responds to `gender` call, returning gender
|
14
|
+
symbol ie :f (see full list in lib/genderify/string_ext.rb)
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
>> "(He|She) favorited your post!".genderify(user)
|
18
|
+
=> "She favorited your post!".
|
19
|
+
```
|
20
|
+
|
13
21
|
## Installation
|
14
22
|
|
15
23
|
Add this line to your application's Gemfile:
|
data/lib/genderify/string_ext.rb
CHANGED
@@ -4,23 +4,28 @@ String.class_eval do
|
|
4
4
|
|
5
5
|
# Genderifies string. This is done by replacing every occurence of (x|y)
|
6
6
|
# with either left (x) or right part (y) of it based on the gender provided as argument.
|
7
|
-
# If argument of function is :f, 'f', :F, 'F', 1 or '
|
8
|
-
# Anything else, including
|
7
|
+
# If argument of function is :f, 'f', :F, 'F', 1, '1', :female or 'female' it will pick
|
8
|
+
# the right side. Anything else, including nil, will use the left side as replacement.
|
9
9
|
# Hm, is this sexist?
|
10
10
|
#
|
11
|
+
# Argument can also be an object that responds to 'gender' call. Returning value of such
|
12
|
+
# function will be applied to stated rules above.
|
13
|
+
#
|
11
14
|
# Example:
|
15
|
+
#
|
12
16
|
# >> "About (him|her)".genderify(:f)
|
13
17
|
# => "About her"
|
14
|
-
|
18
|
+
#
|
19
|
+
def genderify(genderable)
|
20
|
+
gender = genderable.respond_to?(:gender) ? genderable.gender : genderable
|
15
21
|
gsub(/\((.+?)\|(.+?)\)/) do
|
16
22
|
case gender
|
17
|
-
when :f, 'f', :F, 'F', 1, '1'
|
23
|
+
when :f, 'f', :F, 'F', 1, '1', :female, 'female'
|
18
24
|
$2
|
19
25
|
else
|
20
26
|
$1
|
21
27
|
end
|
22
28
|
end
|
23
|
-
|
24
29
|
end
|
25
30
|
|
26
31
|
end
|
data/lib/genderify/version.rb
CHANGED
data/test/string_ext_test.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
+
require "ostruct"
|
3
4
|
require "test/unit"
|
4
5
|
require "genderify"
|
5
6
|
|
6
7
|
class StringExtTest < Test::Unit::TestCase
|
7
8
|
|
8
9
|
def test_0_variants
|
9
|
-
assert_equal "
|
10
|
-
assert_equal "vozi", "vozi".genderify(:f)
|
10
|
+
assert_equal "foo", "foo".genderify(:f)
|
11
11
|
end
|
12
12
|
|
13
13
|
def test_1_variant
|
14
|
-
assert_equal "
|
14
|
+
assert_equal "About him", "About (him|her)".genderify(:m)
|
15
15
|
end
|
16
16
|
|
17
17
|
def test_2_variants
|
@@ -19,4 +19,9 @@ class StringExtTest < Test::Unit::TestCase
|
|
19
19
|
assert_equal "Gde si krenuo, sad će da postavljaju... Jesi li siguran?", str.genderify(:m)
|
20
20
|
assert_equal "Gde si krenula, sad će da postavljaju... Jesi li sigurna?", str.genderify(:f)
|
21
21
|
end
|
22
|
+
|
23
|
+
def test_genderable_object
|
24
|
+
user = OpenStruct.new(gender: 'female', name: 'Jane')
|
25
|
+
assert_equal "She is an addict", "(He|She) is an addict".genderify(user)
|
26
|
+
end
|
22
27
|
end
|