name_to_gender 0.1.0
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.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/README.md +34 -0
- data/Rakefile +6 -0
- data/lib/name_to_gender.rb +19 -0
- data/lib/name_to_gender/data/nam_dict.txt +48890 -0
- data/lib/name_to_gender/lookup.rb +17 -0
- data/lib/name_to_gender/parser.rb +25 -0
- data/lib/name_to_gender/version.rb +3 -0
- data/name_to_gender.gemspec +24 -0
- metadata +97 -0
@@ -0,0 +1,17 @@
|
|
1
|
+
module NameToGender
|
2
|
+
class Lookup
|
3
|
+
def initialize
|
4
|
+
@names = {}
|
5
|
+
end
|
6
|
+
|
7
|
+
def add_name(gender, name)
|
8
|
+
raise "Unknown gender #{gender}" unless POSSIBLE_RESULTS.include?(gender)
|
9
|
+
raise "Name already exists #{name} with different gender" if @names.has_key?(name.downcase) && @names[name.downcase] != gender
|
10
|
+
@names[name.downcase] = gender
|
11
|
+
end
|
12
|
+
|
13
|
+
def gender_of(name)
|
14
|
+
@names[name.downcase]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module NameToGender
|
2
|
+
class Parser
|
3
|
+
DATA_FILE = File.expand_path("../data/nam_dict.txt", __FILE__).freeze
|
4
|
+
USA_OFFSET = 32
|
5
|
+
|
6
|
+
def initialize(data_file = DATA_FILE)
|
7
|
+
@data_file = data_file
|
8
|
+
end
|
9
|
+
|
10
|
+
def parse
|
11
|
+
lookup = Lookup.new
|
12
|
+
|
13
|
+
file = File.open(@data_file, "r", :encoding => "iso8859-1:UTF-8").read
|
14
|
+
file.gsub!(/\r\n?/, "\n")
|
15
|
+
file.each_line do |line|
|
16
|
+
next if line.start_with?("#") || line.start_with?("=")
|
17
|
+
next if line[USA_OFFSET] == " "
|
18
|
+
gender, name, * = line.split
|
19
|
+
lookup.add_name(gender, name)
|
20
|
+
end
|
21
|
+
|
22
|
+
lookup
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'name_to_gender/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "name_to_gender"
|
8
|
+
spec.version = NameToGender::VERSION
|
9
|
+
spec.authors = ["ROOT Devs"]
|
10
|
+
spec.email = ["devs@joinroot.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Determine gender based upon first name}
|
13
|
+
spec.description = %q{Infers gender based upon first names, based upon https://autohotkey.com/board/topic/20260-gender-verification-by-forename-cmd-line-tool-db/}
|
14
|
+
spec.homepage = "https://github.com/Root-App/name_to_gender"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|bin)/}) }
|
17
|
+
spec.bindir = "exe"
|
18
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.12"
|
22
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
23
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: name_to_gender
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- ROOT Devs
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-10-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.12'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.12'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
description: Infers gender based upon first names, based upon https://autohotkey.com/board/topic/20260-gender-verification-by-forename-cmd-line-tool-db/
|
56
|
+
email:
|
57
|
+
- devs@joinroot.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- ".gitignore"
|
63
|
+
- ".rspec"
|
64
|
+
- ".travis.yml"
|
65
|
+
- Gemfile
|
66
|
+
- README.md
|
67
|
+
- Rakefile
|
68
|
+
- lib/name_to_gender.rb
|
69
|
+
- lib/name_to_gender/data/nam_dict.txt
|
70
|
+
- lib/name_to_gender/lookup.rb
|
71
|
+
- lib/name_to_gender/parser.rb
|
72
|
+
- lib/name_to_gender/version.rb
|
73
|
+
- name_to_gender.gemspec
|
74
|
+
homepage: https://github.com/Root-App/name_to_gender
|
75
|
+
licenses: []
|
76
|
+
metadata: {}
|
77
|
+
post_install_message:
|
78
|
+
rdoc_options: []
|
79
|
+
require_paths:
|
80
|
+
- lib
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
requirements: []
|
92
|
+
rubyforge_project:
|
93
|
+
rubygems_version: 2.4.8
|
94
|
+
signing_key:
|
95
|
+
specification_version: 4
|
96
|
+
summary: Determine gender based upon first name
|
97
|
+
test_files: []
|