faker_japanese 0.1.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: aa2074e5823b55f9f022b3616355a86926894d16
4
+ data.tar.gz: d509aa2f6ee814097be04c75ed5c89537e984efb
5
+ SHA512:
6
+ metadata.gz: fa07b8360b40aeae4f10e0dbde615a34617daeca9b4a0e71f8827462048774094d502e78ade28569ff35aa20c7c70403b513f116198d58e051d766848541e7fd
7
+ data.tar.gz: 8638f7ebb2b7f2d3006e714ceccada9ad6078b1fc8ec70eb21558de254b8ef536dec9a3d16f4a59caf744c8abedebdcafc5fdf5600867934373f96af755c2c2d
data/.gitignore ADDED
@@ -0,0 +1,41 @@
1
+ # System generic ignores
2
+ .DS_Store
3
+ .AppleDouble
4
+ .LSOverride
5
+
6
+ # Icon must end with two \r
7
+ Icon
8
+
9
+ # Thumbnails
10
+ ._*
11
+
12
+ # Files that might appear on external disk
13
+ .Spotlight-V100
14
+ .Trashes
15
+
16
+ # Directories potentially created on remote AFP share
17
+ .AppleDB
18
+ .AppleDesktop
19
+ Network Trash Folder
20
+ Temporary Items
21
+ .apdisk
22
+
23
+ # Gem specific ignores
24
+ *.gem
25
+ *.rbc
26
+ .bundle
27
+ .bin
28
+ .config
29
+ .yardoc
30
+ Gemfile.lock
31
+ InstalledFiles
32
+ _yardoc
33
+ coverage
34
+ doc/
35
+ lib/bundler/man
36
+ pkg
37
+ rdoc
38
+ spec/reports
39
+ test/tmp
40
+ test/version_tmp
41
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format Fuubar
2
+ --color
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in faker_japanese.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Denis Vazhenin
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,122 @@
1
+ # faker_japanese
2
+
3
+ Faker extension to generate Japanese names.
4
+ Provides fake first and last name in kanji,hiragana, katakana
5
+ and romaji(name written with latin alphabet).
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ gem 'faker_japanese'
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install faker_japanese
20
+
21
+ ## Usage
22
+
23
+ To enable faker_japanese manually use
24
+
25
+ ```
26
+ require 'faker/japanese'
27
+ ```
28
+
29
+ Before using, set locale to `ja`
30
+
31
+ ```
32
+ Faker::Config.locale = "ja"
33
+ ```
34
+
35
+ Then use `Faker::Name` as you would normally do
36
+
37
+ ```
38
+ n = Faker::Name.name
39
+ => "吉田 順"
40
+ ```
41
+
42
+ ```
43
+ ln = Faker::Name.last_name
44
+ => "山本"
45
+ ```
46
+
47
+ ```
48
+ fn = Faker::Name.first_name
49
+ => "吉"
50
+ ```
51
+
52
+ Along with name in kanji it is possible to get
53
+ same values in hiragana, katakana and romaji
54
+
55
+ ```
56
+ n.yomi
57
+ => "よしだ じゅん"
58
+ n.kana
59
+ => "ヨシダ ジュン"
60
+ n.romaji
61
+ => "Yoshida Jun"
62
+
63
+ ln.yomi
64
+ => "やまもと"
65
+ ln.kana
66
+ => "ヤマモト"
67
+ ln.romaji
68
+ => "Yamamoto"
69
+
70
+ fn.yomi
71
+ => "よし"
72
+ fn.kana
73
+ => "ヨシ"
74
+ fn.romaji
75
+ => "Yoshi"
76
+ ```
77
+
78
+ ## When is it useful?
79
+
80
+ Currently, using only methods and localization provide by Faker
81
+ it is not possible to reuse they values to generate other `fake` data.
82
+
83
+ For example
84
+
85
+ ```
86
+ Faker::Config.locale = "ja"
87
+ ln = Faker::Name.last_name
88
+ p ln
89
+ => "伊藤"
90
+ ml = Faker::Internet.email(ln)
91
+ p ml
92
+ =>"@.name"
93
+ ```
94
+
95
+ On the other hand, using `faker_japanese` it is possible to pass
96
+ name in romaji to generate valid value:
97
+
98
+ ```
99
+ nickname = Faker::Name.name.romaji.split.join.downcase
100
+ => "hayashiyori"
101
+ freeemail = Faker::Internet.free_email(nickname)
102
+ => "hayashiyori@gmail.com"
103
+ ```
104
+
105
+ ## Contributing
106
+
107
+ 1. Fork it
108
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
109
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
110
+ 4. Push to the branch (`git push origin my-new-feature`)
111
+ 5. Create new Pull Request
112
+
113
+ ## Acknowledgements
114
+
115
+ Idea for this work was heavily inspired by the following projects:
116
+ - [Faker main project](https://github.com/stympy/faker)
117
+ - [faker-ja by xiaotuanzi](https://github.com/xiaotuanzi/faker-ja)
118
+ - [ruby-faker-japanese by tily](https://github.com/tily/ruby-faker-japanese)
119
+
120
+ ## License
121
+
122
+ MIT License (see LICENSE.txt)
data/Rakefile ADDED
@@ -0,0 +1,15 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+ require "yard"
4
+
5
+ RSpec::Core::RakeTask.new
6
+ task :default => :spec
7
+ task :test => :spec
8
+
9
+ # Documentation
10
+ YARD::Rake::YardocTask.new do |t|
11
+ t.files = ['lib/**/*.rb'] # optional
12
+ end
13
+
14
+ # desc "Generate gem documentation (same as running 'rake yard')"
15
+ task :doc => :yard
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'faker_japanese/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "faker_japanese"
8
+ spec.version = Faker::Japanese::VERSION
9
+ spec.authors = ["Denis Vazhenin"]
10
+ spec.email = ["denis.vazhenin@me.com"]
11
+ spec.description = %q{Faker extension providing japanese names}
12
+ spec.summary = %q{Faker extension for japanese names}
13
+ spec.license = "MIT"
14
+
15
+ spec.files = `git ls-files`.split($/)
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_runtime_dependency "faker"
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "rspec-expectations"
25
+ spec.add_development_dependency "fuubar"
26
+ spec.add_development_dependency "yard"
27
+ end
@@ -0,0 +1,69 @@
1
+ require 'faker'
2
+
3
+ module Faker
4
+ module Japanese
5
+ SELFDIR = File.expand_path(File.dirname(__FILE__))
6
+
7
+ class Kanji < String
8
+ attr_reader :yomi, :kana, :romaji
9
+
10
+ def initialize(kanji, yomi, kana, romaji)
11
+ super(kanji)
12
+ @yomi = yomi
13
+ @kana = kana
14
+ @romaji = romaji
15
+ end
16
+ end
17
+
18
+ class Base
19
+ class << self
20
+
21
+ # Using callback to store loaded data when subclass is created
22
+ def inherited(klass)
23
+ klass.class_variable_set "@@data", load_data(klass)
24
+ end
25
+
26
+ # Load fake data from yml file
27
+ def load_data(klass)
28
+ datafile = File.join(SELFDIR, 'faker_japanese',
29
+ 'data', "#{klass.to_s.split('::').last.downcase}.yml")
30
+ if datafile && File.readable?(datafile)
31
+ data = YAML.load_file(datafile).each_with_object({}){|(k,v), h| h[k.to_sym] = v}
32
+ data.inject({}) do |res, item|
33
+ key, values, = item
34
+ res.update(key => values.map! { |v| Kanji.new(*v) })
35
+ end
36
+ else
37
+ nil
38
+ end
39
+ end
40
+
41
+ # Search
42
+ def fetch(key)
43
+ val = self.class_variable_get("@@data")[key]
44
+ ret = val[rand(val.size)]
45
+ end
46
+
47
+ # Swap method if block was evaluated to true
48
+ def swap_method(klass, name)
49
+ original_method =klass.method(name)
50
+ new_method =method(name)
51
+ klass.singleton_class.send :define_method, name, proc {
52
+ yield ? new_method.call : original_method.call
53
+ }
54
+ end
55
+
56
+ # Decide which method to use based on value of Faker::Config.locale
57
+ def use_japanese_method(klass, name)
58
+ swap_method(klass, name) do
59
+ Faker::Config.locale == "ja"
60
+ end
61
+ end
62
+
63
+ end # << self
64
+ end # Base
65
+ end # Japanese
66
+ end # Faker
67
+
68
+ require 'faker_japanese/version'
69
+ require 'faker_japanese/name'
@@ -0,0 +1,32 @@
1
+ last_name:
2
+ - ["藤井","ふじい", "フジイ", "Fujii"]
3
+ - ["林", "はやし", "ハヤシ", "Hayashi"]
4
+ - ["伊藤", "いとう", "イトウ", "Ito"]
5
+ - ["加藤", "かとう", "カトウ", "Kato"]
6
+ - ["小林", "こばやし", "コバヤシ", "Kobayashi"]
7
+ - ["黒木", "くろき", "クロキ", "Kuroki"]
8
+ - ["佐藤", "さとう", "サトウ", "Sato"]
9
+ - ["鈴木", "すずき", "スズキ", "Suzuki"]
10
+ - ["高橋", "たかはし", "タカハシ", "Takahashi"]
11
+ - ["田中", "たなか", "タナカ", "Tanaka"]
12
+ - ["渡辺", "わたなべ", "ワタナベ", "Watanabe"]
13
+ - ["山田", "やまだ", "ヤマダ", "Yamada"]
14
+ - ["山本", "やまもと", "ヤマモト", "Yamamoto"]
15
+ - ["吉田", "よしだ", "ヨシダ", "Yoshida"]
16
+
17
+ first_name:
18
+ - ["秋", "あき", "アキ", "Aki"]
19
+ - ["明", "あきら", "アキラ", "Akira"]
20
+ - ["輝", "ひかる", "ヒカル", "Hikaru"]
21
+ - ["裕", "ひろ", "ヒロ", "Hiro"]
22
+ - ["密", "ひそか", "ヒソカ", "Hisoka"]
23
+ - ["順", "じゅん", "ジュン", "Jun"]
24
+ - ["楓", "かえで", "カエデ", "Kaede"]
25
+ - ["琥珀", "こはく", "コハク", "Kohaku"]
26
+ - ["雅", "まさ", "マサ", "Masa"]
27
+ - ["真澄", "ますみ", "マサミ", "Masumi"]
28
+ - ["直樹", "なおき", "ナオキ", "Naoki"]
29
+ - ["亮", "りょう", "リョウ", "Ryou"]
30
+ - ["より", "より", "ヨリ", "Yori"]
31
+ - ["吉", "よし", "ヨシ", "Yoshi"]
32
+ - ["雪", "ゆき", "ユキ", "Yuki"]
@@ -0,0 +1,33 @@
1
+ module Faker
2
+ module Japanese
3
+ class Name < Base
4
+ class << self
5
+
6
+ # Return fake first name
7
+ def first_name
8
+ fetch(:first_name)
9
+ end
10
+
11
+ # Return fake last name
12
+ def last_name
13
+ fetch(:last_name)
14
+ end
15
+
16
+ # Return fake name, which is a string combining last and first name
17
+ def name
18
+ first_name =fetch(:first_name)
19
+ last_name =fetch(:last_name)
20
+ name_kanji ="#{last_name} #{first_name}"
21
+ name_yomi ="#{last_name.yomi} #{first_name.yomi}"
22
+ name_kana ="#{last_name.kana} #{first_name.kana}"
23
+ name_romaji ="#{last_name.romaji} #{first_name.romaji}"
24
+ Kanji.new(name_kanji, name_yomi, name_kana, name_romaji)
25
+ end
26
+ end
27
+
28
+ use_japanese_method Faker::Name, :first_name
29
+ use_japanese_method Faker::Name, :last_name
30
+ use_japanese_method Faker::Name, :name
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,5 @@
1
+ module Faker
2
+ module Japanese
3
+ VERSION = "0.1.2"
4
+ end
5
+ end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ describe Faker::Japanese do
4
+
5
+ it "should use native methods when locale is not set to ja" do
6
+ if (Faker::Config.locale != 'ja')
7
+ name = Faker::Name.name
8
+ name.should_not be_nil
9
+ name.contains_cjk?.should == false
10
+ first_name = Faker::Name.first_name
11
+ first_name.should_not be_nil
12
+ first_name.contains_cjk?.should == false
13
+ last_name = Faker::Name.first_name
14
+ last_name.should_not be_nil
15
+ last_name.contains_cjk?.should == false
16
+ else
17
+ fail
18
+ end
19
+ end
20
+
21
+ it "should not use japanese method when locale is not set to ja" do
22
+ name = Faker::Name.name
23
+ expect { name.yomi }.to raise_error NoMethodError
24
+ expect { name.kana }.to raise_error NoMethodError
25
+ expect { name.romaji }.to raise_error NoMethodError
26
+ end
27
+
28
+ it "should use japanese method when locale is set to ja" do
29
+ Faker::Config.locale = 'ja'
30
+ if (Faker::Config.locale == 'ja')
31
+ first_name = Faker::Name.first_name
32
+ first_name.should_not be_nil
33
+ first_name.contains_cjk?.should == true
34
+ last_name = Faker::Name.last_name
35
+ last_name.should_not be_nil
36
+ last_name.contains_cjk?.should == true
37
+ name = Faker::Name.name
38
+ name.should_not be_nil
39
+ name.contains_cjk?.should == true
40
+ name.yomi.contains_cjk?.should == true
41
+ name.kana.contains_cjk?.should == true
42
+ name.romaji.contains_cjk?.should == false
43
+ else
44
+ fail
45
+ end
46
+ end
47
+
48
+ end
@@ -0,0 +1,15 @@
1
+ require 'faker_japanese'
2
+
3
+ class String
4
+ # Method to check if string contains cjk characters
5
+ def contains_cjk?
6
+ !!(self =~ /\p{Han}|\p{Katakana}|\p{Hiragana}|\p{Hangul}/)
7
+ end
8
+ end
9
+
10
+ I18n.enforce_available_locales = true
11
+
12
+ RSpec.configure do |config|
13
+ config.failure_color = :magenta
14
+ config.tty = true
15
+ end
metadata ADDED
@@ -0,0 +1,158 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: faker_japanese
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Denis Vazhenin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-04-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faker
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec-expectations
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: fuubar
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: yard
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Faker extension providing japanese names
112
+ email:
113
+ - denis.vazhenin@me.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - ".gitignore"
119
+ - ".rspec"
120
+ - Gemfile
121
+ - LICENSE.txt
122
+ - README.md
123
+ - Rakefile
124
+ - faker_japanese.gemspec
125
+ - lib/faker_japanese.rb
126
+ - lib/faker_japanese/data/name.yml
127
+ - lib/faker_japanese/name.rb
128
+ - lib/faker_japanese/version.rb
129
+ - spec/lib/faker_japanese_spec.rb
130
+ - spec/spec_helper.rb
131
+ homepage:
132
+ licenses:
133
+ - MIT
134
+ metadata: {}
135
+ post_install_message:
136
+ rdoc_options: []
137
+ require_paths:
138
+ - lib
139
+ required_ruby_version: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ required_rubygems_version: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
149
+ requirements: []
150
+ rubyforge_project:
151
+ rubygems_version: 2.2.2
152
+ signing_key:
153
+ specification_version: 4
154
+ summary: Faker extension for japanese names
155
+ test_files:
156
+ - spec/lib/faker_japanese_spec.rb
157
+ - spec/spec_helper.rb
158
+ has_rdoc: