faker-japanese 0.0.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,78 @@
1
+ #!/usr/bin/env ruby
2
+ require 'erb'
3
+
4
+ DEFAULT_DIC_PATH = '/var/lib/chasen/dic/naist-jdic-utf8/naist-jdic.dic'
5
+ NAME_CLASS_PATH = File.dirname(__FILE__) + '/../lib/faker/japanese/name.rb'
6
+
7
+ def parse_dic(dic_path)
8
+ names = Hash.new {|h,k| h[k] = [] }
9
+ File.open(dic_path).each do |line|
10
+ if type = line[/\(品詞 \(名詞 固有名詞 人名 (姓|名)\)\)/, 1]
11
+ key = type == '姓' ? :last : :first
12
+ name = line[/\(\(見出し語 \((.+) \d+\)\)/, 1]
13
+ yomi = line[/\(読み (.+?)\)/, 1]
14
+ if match = yomi[/^\{(.+)\}$/, 1]
15
+ yomis = match.split('/')
16
+ yomis.each do |yomi|
17
+ names[key] << [name, yomi]
18
+ end
19
+ else
20
+ names[key] << [name, yomi]
21
+ end
22
+ end
23
+ end
24
+ names
25
+ end
26
+
27
+ def write_class(names)
28
+ erb = ERB.new(DATA.read, nil, '-')
29
+ file = File.open(NAME_CLASS_PATH, 'w')
30
+ file.write(erb.result(binding))
31
+ end
32
+
33
+ def main
34
+ dic_path = ARGV[0] || DEFAULT_DIC_PATH
35
+ names = parse_dic(dic_path)
36
+ write_class(names)
37
+ end
38
+
39
+ main
40
+
41
+ __END__
42
+
43
+ module Faker
44
+ module Japanese
45
+ module Name
46
+ extend self
47
+
48
+ <%- [:first, :last].each do |key| -%>
49
+ @<%= key %>_names = [
50
+ <%- names[key].each do |name, yomi| -%>
51
+ ['<%= name %>', '<%= yomi %>'],
52
+ <%- end -%>
53
+ ]
54
+ <%- end -%>
55
+
56
+ def name
57
+ first, last = first_name, last_name
58
+ name = [last, first].join(' ')
59
+ set_yomi(name, last.yomi + ' ' + first.yomi)
60
+ name
61
+ end
62
+
63
+ [:first_name, :last_name].each do |m|
64
+ define_method m do
65
+ chosen = instance_variable_get("@#{m}s").rand
66
+ name = chosen[0]
67
+ set_yomi(name, chosen[1])
68
+ name
69
+ end
70
+ end
71
+
72
+ def set_yomi(name, yomi)
73
+ name.instance_variable_set('@yomi', yomi)
74
+ def name.yomi; @yomi end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,45 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe Faker::Japanese::Name do
4
+ before do
5
+ @expect = {
6
+ :first_name => [['良子', 'リョウコ'], ['武', 'タケシ'], ['修三', 'シュウゾウ']],
7
+ :last_name => [['木村', 'キムラ'], ['田中', 'タナカ'], ['佐藤', 'サトウ']]
8
+ }
9
+ @expect.each do |k, v|
10
+ Faker::Japanese::Name.instance_variable_set("@#{k}s", v)
11
+ end
12
+ end
13
+
14
+ it "#name" do
15
+ expect = {
16
+ :first_name => ['太郎', 'タロウ'],
17
+ :last_name => ['安藤', 'アンドウ']
18
+ }
19
+ expect.each do |k, v|
20
+ name = v[0]
21
+ name.stub!(:yomi => v[1])
22
+ Faker::Japanese::Name.should_receive(k).and_return(name)
23
+ end
24
+ name = Faker::Japanese::Name.name
25
+ name.should == "#{expect[:last_name][0]} #{expect[:first_name][0]}"
26
+ name.yomi.should == "#{expect[:last_name][1]} #{expect[:first_name][1]}"
27
+ end
28
+
29
+ it "#first_name, #last_name" do
30
+ @expect.each do |k, v|
31
+ names = v.map {|n| n[0] }
32
+ yomis = v.map {|n| n[1] }
33
+ name = Faker::Japanese::Name.send(k)
34
+ names.should include name
35
+ yomis.should include name.yomi
36
+ end
37
+ end
38
+
39
+ it "#set_yomi" do
40
+ expect = 'ヨミ'
41
+ o = Object.new
42
+ Faker::Japanese::Name.set_yomi(o, expect)
43
+ o.yomi.should == expect
44
+ end
45
+ end
@@ -0,0 +1,6 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'faker/japanese'
4
+ require 'rspec'
5
+ require 'rspec/autorun'
6
+
metadata ADDED
@@ -0,0 +1,112 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: faker-japanese
3
+ version: !ruby/object:Gem::Version
4
+ hash: 31
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 0
10
+ version: 0.0.0
11
+ platform: ruby
12
+ authors:
13
+ - tily
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-11-03 00:00:00 +09:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: faker
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: rspec
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 13
44
+ segments:
45
+ - 1
46
+ - 2
47
+ - 9
48
+ version: 1.2.9
49
+ type: :development
50
+ version_requirements: *id002
51
+ description: Faker in Japanese
52
+ email: tily05@gmail.com
53
+ executables: []
54
+
55
+ extensions: []
56
+
57
+ extra_rdoc_files:
58
+ - LICENSE
59
+ - LICENSE.naist-jdic
60
+ - README.md
61
+ files:
62
+ - .document
63
+ - .gitignore
64
+ - LICENSE
65
+ - LICENSE.naist-jdic
66
+ - README.md
67
+ - Rakefile
68
+ - VERSION
69
+ - example/your_friends.rb
70
+ - lib/faker/japanese.rb
71
+ - lib/faker/japanese/name.rb
72
+ - script/generate.rb
73
+ - spec/.rspec
74
+ - spec/name_spec.rb
75
+ - spec/spec_helper.rb
76
+ has_rdoc: true
77
+ homepage: http://github.com/tily/ruby-faker-japanese
78
+ licenses: []
79
+
80
+ post_install_message:
81
+ rdoc_options:
82
+ - --charset=UTF-8
83
+ require_paths:
84
+ - lib
85
+ required_ruby_version: !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ hash: 3
91
+ segments:
92
+ - 0
93
+ version: "0"
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ hash: 3
100
+ segments:
101
+ - 0
102
+ version: "0"
103
+ requirements: []
104
+
105
+ rubyforge_project:
106
+ rubygems_version: 1.3.7
107
+ signing_key:
108
+ specification_version: 3
109
+ summary: Faker in Japanese
110
+ test_files:
111
+ - spec/name_spec.rb
112
+ - spec/spec_helper.rb