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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/CHANGELOG.md +2 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +57 -0
- data/Rakefile +2 -0
- data/data/facts.json +6463 -0
- data/lib/random_facts.rb +45 -0
- data/lib/random_facts/version.rb +3 -0
- data/random_facts.gemspec +24 -0
- metadata +96 -0
data/lib/random_facts.rb
ADDED
@@ -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,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: []
|