random_facts 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,45 @@
1
+ require 'random_facts/version'
2
+
3
+ module RandomFacts
4
+ class Generator
5
+ ROOT = File.expand_path("../..", __FILE__)
6
+
7
+ def self.process(options = {})
8
+ file = File.read("#{ROOT}/data/facts.json")
9
+ data_hash = JSON.parse(file)
10
+ random_numbers = []
11
+ final_data = []
12
+
13
+ # if options type is given filter out only the facts that refer to that kind of type
14
+ if options[:type].present?
15
+ filtered_data = data_hash['facts'].select { |fact| fact['type'] == options[:type] }
16
+ else
17
+ filtered_data = data_hash['facts']
18
+ end
19
+
20
+ # if option size is given try to produce random numbers to select
21
+ if options[:size].present? && filtered_data.size > 0
22
+ while random_numbers.size < options[:size]
23
+ number = rand(filtered_data.size - 1)
24
+ unless random_numbers.include? number
25
+ random_numbers << number
26
+ end
27
+ end
28
+
29
+ random_numbers.each do |index|
30
+ final_data << filtered_data[index]
31
+ end
32
+ else
33
+ final_data = filtered_data
34
+ end
35
+
36
+ final_data.map { |fact| fact['fact'] }
37
+ end
38
+
39
+ def self.valid_types
40
+ file = File.read("#{ROOT}/data/facts.json")
41
+ data_hash = JSON.parse(file)
42
+ data_hash['facts'].collect { |fact| fact['type'] }.uniq.sort
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,3 @@
1
+ module RandomFacts
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'random_facts/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "random_facts"
8
+ spec.version = RandomFacts::VERSION
9
+ spec.authors = ["Vasilis Kalligas"]
10
+ spec.email = ["billkall@gmail.com"]
11
+ spec.summary = %q{A random facts generator}
12
+ spec.description = %q{A gem to provide random facts based on requested parameters}
13
+ spec.homepage = "https://github.com/arcanoid/random_facts"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency 'bundler', '~> 1.7'
22
+ spec.add_development_dependency 'rake', '~> 10.0'
23
+ spec.add_development_dependency 'rspec'
24
+ end
metadata ADDED
@@ -0,0 +1,96 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: random_facts
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Vasilis Kalligas
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-12-31 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
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
+ description: A gem to provide random facts based on requested parameters
56
+ email:
57
+ - billkall@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - CHANGELOG.md
64
+ - Gemfile
65
+ - LICENSE.txt
66
+ - README.md
67
+ - Rakefile
68
+ - data/facts.json
69
+ - lib/random_facts.rb
70
+ - lib/random_facts/version.rb
71
+ - random_facts.gemspec
72
+ homepage: https://github.com/arcanoid/random_facts
73
+ licenses:
74
+ - MIT
75
+ metadata: {}
76
+ post_install_message:
77
+ rdoc_options: []
78
+ require_paths:
79
+ - lib
80
+ required_ruby_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ requirements: []
91
+ rubyforge_project:
92
+ rubygems_version: 2.4.8
93
+ signing_key:
94
+ specification_version: 4
95
+ summary: A random facts generator
96
+ test_files: []