sexmachine 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +3 -1
- data/README.rdoc +7 -1
- data/lib/sexmachine/detector.rb +17 -8
- data/lib/sexmachine/version.rb +1 -1
- metadata +14 -3
data/Gemfile.lock
CHANGED
data/README.rdoc
CHANGED
@@ -24,7 +24,13 @@ Additionally, you can give preference to specific countries:
|
|
24
24
|
>> d.get_gender("Jamie", :great_britain)
|
25
25
|
=> :mostly_male
|
26
26
|
|
27
|
-
If you have an alterative data file, you can pass that in as an optional argument to the Detector.
|
27
|
+
If you have an alterative data file, you can pass that in as an optional filename argument to the Detector. Additionally, you can create a detector that is not case sensitive (default *is* to be case sensitive):
|
28
|
+
|
29
|
+
>> d = SexMachine::Detector.new(:case_sensitive => false)
|
30
|
+
>> d.get_gender "sally"
|
31
|
+
=> :female
|
32
|
+
>> d.get_gender "Sally"
|
33
|
+
=> :female
|
28
34
|
|
29
35
|
Try to avoid creating many Detectors, as each creation means reading in the data file.
|
30
36
|
|
data/lib/sexmachine/detector.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require "unicode_utils/downcase"
|
2
|
+
|
1
3
|
module SexMachine
|
2
4
|
|
3
5
|
class Detector
|
@@ -7,9 +9,13 @@ module SexMachine
|
|
7
9
|
:greece, :russia, :belarus, :moldova, :ukraine, :armenia, :azerbaijan, :georgia, :the_stans, :turkey, :arabia, :israel, :china,
|
8
10
|
:india, :japan, :korea, :vietnam, :other_countries ]
|
9
11
|
|
10
|
-
def initialize(
|
11
|
-
|
12
|
-
|
12
|
+
def initialize(opts = {})
|
13
|
+
opts = {
|
14
|
+
:filename => File.expand_path('../data/nam_dict.txt', __FILE__),
|
15
|
+
:case_sensitive => true
|
16
|
+
}.merge(opts)
|
17
|
+
@case_sensitive = opts[:case_sensitive]
|
18
|
+
parse opts[:filename]
|
13
19
|
end
|
14
20
|
|
15
21
|
def parse(fname)
|
@@ -22,6 +28,8 @@ module SexMachine
|
|
22
28
|
end
|
23
29
|
|
24
30
|
def get_gender(name, country = nil)
|
31
|
+
name = UnicodeUtils.downcase(name) unless @case_sensitive
|
32
|
+
|
25
33
|
if not @names.has_key?(name)
|
26
34
|
:andy
|
27
35
|
elsif country.nil?
|
@@ -44,13 +52,14 @@ module SexMachine
|
|
44
52
|
|
45
53
|
parts = line.split(" ").select { |p| p.strip != "" }
|
46
54
|
country_values = line.slice(30, line.length)
|
55
|
+
name = @case_sensitive ? parts[1] : UnicodeUtils.downcase(parts[1])
|
47
56
|
|
48
57
|
case parts[0]
|
49
|
-
when "M" then set(
|
50
|
-
when "1M", "?M" then set(
|
51
|
-
when "F" then set(
|
52
|
-
when "1F", "?F" then set(
|
53
|
-
when "?" then set(
|
58
|
+
when "M" then set(name, :male, country_values)
|
59
|
+
when "1M", "?M" then set(name, :mostly_male, country_values)
|
60
|
+
when "F" then set(name, :female, country_values)
|
61
|
+
when "1F", "?F" then set(name, :mostly_female, country_values)
|
62
|
+
when "?" then set(name, :andy, country_values)
|
54
63
|
else raise "Not sure what to do with a sex of #{parts[0]}"
|
55
64
|
end
|
56
65
|
end
|
data/lib/sexmachine/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sexmachine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,19 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
13
|
-
dependencies:
|
12
|
+
date: 2012-07-26 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: unicode_utils
|
16
|
+
requirement: &70220187561160 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.3.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70220187561160
|
14
25
|
description: Get gender from first name.
|
15
26
|
email: brian.muller@livingsocial.com
|
16
27
|
executables: []
|