random_facts 1.0.0

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.
@@ -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: []