Class: Faker::Japanese::Base
- Inherits:
-
Object
- Object
- Faker::Japanese::Base
- Defined in:
- lib/faker_japanese.rb
Direct Known Subclasses
Class Method Summary collapse
-
.fetch(key) ⇒ Object
Search.
-
.inherited(klass) ⇒ Object
Using callback to store loaded data when subclass is created.
-
.load_data(klass) ⇒ Object
Load fake data from yml file.
-
.swap_method(klass, name) ⇒ Object
Swap method if block was evaluated to true.
-
.use_japanese_method(klass, name) ⇒ Object
Decide which method to use based on value of Faker::Config.locale.
Class Method Details
.fetch(key) ⇒ Object
Search
42 43 44 45 |
# File 'lib/faker_japanese.rb', line 42 def fetch(key) val = self.class_variable_get("@@data")[key] ret = val[rand(val.size)] end |
.inherited(klass) ⇒ Object
Using callback to store loaded data when subclass is created
22 23 24 |
# File 'lib/faker_japanese.rb', line 22 def inherited(klass) klass.class_variable_set "@@data", load_data(klass) end |
.load_data(klass) ⇒ Object
Load fake data from yml file
27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/faker_japanese.rb', line 27 def load_data(klass) datafile = File.join(SELFDIR, 'faker_japanese', 'data', "#{klass.to_s.split('::').last.downcase}.yml") if datafile && File.readable?(datafile) data = YAML.load_file(datafile).each_with_object({}){|(k,v), h| h[k.to_sym] = v} data.inject({}) do |res, item| key, values, = item res.update(key => values.map! { |v| Kanji.new(*v) }) end else nil end end |
.swap_method(klass, name) ⇒ Object
Swap method if block was evaluated to true
48 49 50 51 52 53 54 |
# File 'lib/faker_japanese.rb', line 48 def swap_method(klass, name) original_method =klass.method(name) new_method =method(name) klass.singleton_class.send :define_method, name, proc { yield ? new_method.call : original_method.call } end |
.use_japanese_method(klass, name) ⇒ Object
Decide which method to use based on value of Faker::Config.locale
57 58 59 60 61 |
# File 'lib/faker_japanese.rb', line 57 def use_japanese_method(klass, name) swap_method(klass, name) do Faker::Config.locale == "ja" end end |