Class: Faker::Japanese::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/faker_japanese.rb

Direct Known Subclasses

Name

Class Method Summary collapse

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