Class: RandomFacts::Generator

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

Constant Summary collapse

ROOT =
File.expand_path("../..", __FILE__)

Class Method Summary collapse

Class Method Details

.process(options = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/random_facts.rb', line 7

def self.process(options = {})
  file = File.read("#{ROOT}/data/facts.json")
  data_hash = JSON.parse(file)
  random_numbers = []
  final_data = []

  # if options type is given filter out only the facts that refer to that kind of type
  if options[:type].present?
    filtered_data = data_hash['facts'].select { |fact| fact['type'] == options[:type] }
  else
    filtered_data = data_hash['facts']
  end

  # if option size is given try to produce random numbers to select
  if options[:size].present? && filtered_data.size > 0
    while random_numbers.size < options[:size]
      number = rand(filtered_data.size - 1)
      unless random_numbers.include? number
        random_numbers << number
      end
    end

    random_numbers.each do |index|
      final_data << filtered_data[index]
    end
  else
    final_data = filtered_data
  end

  final_data.map { |fact| fact['fact'] }
end

.valid_typesObject



39
40
41
42
43
# File 'lib/random_facts.rb', line 39

def self.valid_types
  file = File.read("#{ROOT}/data/facts.json")
  data_hash = JSON.parse(file)
  data_hash['facts'].collect { |fact| fact['type'] }.uniq.sort
end