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.
@@ -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,3 @@
1
+ module NameToGender
2
+ VERSION = "0.1.0"
3
+ 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: []