joyce_quiz_app_gem 0.1.1 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9a8d7e73bb93a97ec4e7777f522dc656dd50e8e865b4e71f5308ee49aebf3f08
4
- data.tar.gz: 36bb101d9d184b78fa389b90a751e7e07a0e7ffc2d37b31b9a65e0bf5accf81d
3
+ metadata.gz: ab1c1376f031472175110094ac431c7910ccefa9640daa6d2b3c905c605ae876
4
+ data.tar.gz: 6acddb996fe3b4dcc101589ee7cf704d6940bdc219910593cb8255b20b378da5
5
5
  SHA512:
6
- metadata.gz: 51f4390af73b2559d2334ddafeb9f6191075bb6b4c40b9f2954ba8507a37499c73743e3f0564fa82bf078fe53c9b2bb48e42035a9f358b1ca8d2198acc5ece53
7
- data.tar.gz: b6d59234947a8603c4dca92f3763859ced0301fae8133c07fe934986b214cbc382ab8480ff8d0e0da7ba1e0ff10a347cade07974be5c4f2d8003b4ca626d56ac
6
+ metadata.gz: 1dd5daebafc2c9a80bf43e0756d3b69a493152a89e47c215618bf29beaebc0da65fd027e0ec796a3dcaaaa7eba378a188d8acb3fddd5faa76b3b349b12527df4
7
+ data.tar.gz: 7bbd4e1d4d796692127eb709fd6bdb0b271ae40f035a35d8cfa85f7132f68002c62206d39f4c8308eca4d2063b273fe66b210d4d7da9ff56b1cd0af854e3fa4e
data/Gemfile.lock ADDED
@@ -0,0 +1,64 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ joyce_quiz_app_gem (0.1.1)
5
+ colorize (~> 0.8.1)
6
+ lolcat (~> 100.0, >= 100.0.1)
7
+ tty-font (~> 0.5.0)
8
+ tty-prompt (~> 0.21.0)
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ colorize (0.8.1)
14
+ diff-lcs (1.3)
15
+ equatable (0.6.1)
16
+ lolcat (100.0.1)
17
+ manpages (~> 0.6.1)
18
+ optimist (~> 3.0.0)
19
+ paint (~> 2.1)
20
+ manpages (0.6.1)
21
+ necromancer (0.5.1)
22
+ optimist (3.0.0)
23
+ paint (2.2.0)
24
+ pastel (0.7.3)
25
+ equatable (~> 0.6)
26
+ tty-color (~> 0.5)
27
+ rake (12.3.3)
28
+ rspec (3.9.0)
29
+ rspec-core (~> 3.9.0)
30
+ rspec-expectations (~> 3.9.0)
31
+ rspec-mocks (~> 3.9.0)
32
+ rspec-core (3.9.1)
33
+ rspec-support (~> 3.9.1)
34
+ rspec-expectations (3.9.0)
35
+ diff-lcs (>= 1.2.0, < 2.0)
36
+ rspec-support (~> 3.9.0)
37
+ rspec-mocks (3.9.1)
38
+ diff-lcs (>= 1.2.0, < 2.0)
39
+ rspec-support (~> 3.9.0)
40
+ rspec-support (3.9.2)
41
+ tty-color (0.5.1)
42
+ tty-cursor (0.7.1)
43
+ tty-font (0.5.0)
44
+ tty-prompt (0.21.0)
45
+ necromancer (~> 0.5.0)
46
+ pastel (~> 0.7.0)
47
+ tty-reader (~> 0.7.0)
48
+ tty-reader (0.7.0)
49
+ tty-cursor (~> 0.7)
50
+ tty-screen (~> 0.7)
51
+ wisper (~> 2.0.0)
52
+ tty-screen (0.7.1)
53
+ wisper (2.0.1)
54
+
55
+ PLATFORMS
56
+ ruby
57
+
58
+ DEPENDENCIES
59
+ joyce_quiz_app_gem!
60
+ rake (~> 12.0)
61
+ rspec (~> 3.0)
62
+
63
+ BUNDLED WITH
64
+ 2.1.4
@@ -27,5 +27,10 @@ Gem::Specification.new do |spec|
27
27
  spec.require_paths = ["lib"]
28
28
 
29
29
  spec.add_dependency "colorize", "~>0.8.1"
30
+ spec.add_dependency 'tty-prompt', '~> 0.21.0'
31
+ spec.add_dependency 'tty-font', '~> 0.5.0'
32
+ spec.add_dependency 'lolcat', '~> 100.0', '>= 100.0.1'
33
+ spec.add_dependency 'tty-table', '~> 0.11.0'
34
+ spec.add_dependency 'highline', '~> 2.0', '>= 2.0.3'
30
35
  end
31
36
 
data/lib/creator.rb ADDED
@@ -0,0 +1,99 @@
1
+ require_relative 'shared_features'
2
+ include Features
3
+ require 'colorize'
4
+ require 'tty-table'
5
+ require 'csv'
6
+ require 'highline'
7
+
8
+ def continue
9
+ print "Press any key to continue"
10
+ gets
11
+ end
12
+
13
+ def review()
14
+ if File.exist?('./tester_summary.csv') == false
15
+ then puts "No Data recorded"
16
+ sleep 2
17
+ menu()
18
+ end
19
+
20
+ csv_text = File.read('tester_summary.csv')
21
+ csv = CSV.parse(csv_text, headers: true)
22
+ user_complete_list=[]
23
+ csv.each do |row|
24
+ row_data = row.to_hash
25
+ user_complete_list<<row_data
26
+ end
27
+ user_list=[]
28
+ user=[]
29
+ user_complete_list.each do |record|
30
+ record.each do |k,v|
31
+ if k == "user_id" || k == "total_correct_answers" || k =="accuracy"
32
+ then
33
+ user.push(v)
34
+ end
35
+ end
36
+ user_list<<user
37
+ user=[]
38
+ end
39
+
40
+ table = TTY::Table.new ['User ID'.yellow,'Correct Answers'.yellow,'Accuracy(%)'.yellow], user_list
41
+ puts table.render(:ascii)
42
+ puts
43
+ puts
44
+ continue
45
+ menu()
46
+ end
47
+
48
+ def login()
49
+ user1 = []
50
+ pwd=[]
51
+ File.readlines('./test.txt', chomp: true).each.with_index(1) do |line, line_number|
52
+ user1 << line if line_number == 1
53
+ pwd << (line_number == 2 ? line : next)
54
+ end
55
+ cli = HighLine.new
56
+ default=user1[0]
57
+ username = cli.ask("Enter your username: ") { |q| q.default = default }
58
+ require 'io/console'
59
+ print "Enter your password: "
60
+ password = STDIN.noecho(&:gets).chomp
61
+ sleep 1
62
+ if password==pwd[0]
63
+ then menu()
64
+ else system("clear")
65
+ login()
66
+ end
67
+ end
68
+
69
+ def menu()
70
+ prompt = TTY::Prompt.new
71
+ select = prompt.select("What would you like to do today") do |menu|
72
+ menu.default 1
73
+
74
+ menu.choice "Review results",1
75
+ menu.choice "Create new question?",2
76
+ menu.choice "Let's destroy EVERYTHING".red+"\n".red,3
77
+ menu.choice "Back",4
78
+ system("clear")
79
+ end
80
+ case select
81
+ when 1
82
+ review()
83
+ when 2
84
+ add_question()
85
+ when 4
86
+ load './joyce_quiz_app_gem.rb'
87
+ else
88
+ system('clear')
89
+ puts "Please type YES to confirm"
90
+ print ">"
91
+ input=gets.chomp
92
+ if input == "YES"
93
+ File.delete('./tester_summary.csv') if File.exist?('./tester_summary.csv')
94
+ end
95
+ menu()
96
+ end
97
+ end
98
+
99
+ login()
@@ -1,3 +1,3 @@
1
1
  module JoyceQuizAppGem
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -1,6 +1,50 @@
1
- require "joyce_quiz_app_gem/version"
1
+ # require "joyce_quiz_app_gem/version"
2
2
 
3
- module JoyceQuizAppGem
4
- class Error < StandardError; end
5
- # Your code goes here...
3
+ require 'tty-font'
4
+ require 'tty-prompt'
5
+
6
+ def pic1
7
+ puts"
8
+ . : .
9
+ '. . : . .'
10
+ ._ '._.-'''-._.' _.
11
+ '-..' '..-'
12
+ --._ /.==. .==.\\ _.--
13
+ ;/_o__\\ /_o__\\;
14
+ -----|` ) ( `|-----
15
+ _: \\_) (\\_/) (_/ ;_
16
+ --' \\ '._.=._.' / '--
17
+ _.-''. '._.' .''-._
18
+ ' .''-.(_).-''. '
19
+ .' ' : ' '.
20
+ ' : '
21
+ '"
22
+ end
23
+
24
+ system('clear')
25
+ font = TTY::Font.new(:doom)
26
+ puts font.write("1 Min Quiz")
27
+ prompt = TTY::Prompt.new
28
+ user_type = prompt.select("What's your role?") do |menu|
29
+ menu.default 1
30
+
31
+ menu.choice 'Tester',1
32
+ menu.choice 'Creator'+"\n",2
33
+ menu.choice 'Exit',3
6
34
  end
35
+ sleep 1
36
+ system ("clear")
37
+ if user_type==1
38
+ load './tester.rb'
39
+ elsif user_type==2
40
+ load './creator.rb'
41
+ else
42
+ puts
43
+ system "echo ' Have a good day' | lolcat"
44
+ pic1()
45
+ sleep 1
46
+ exit
47
+ end
48
+
49
+
50
+
data/lib/questions.csv ADDED
@@ -0,0 +1,16 @@
1
+ question,answer_1,answer_2,answer_3,correct_answer
2
+ Which country has more tractors per capita?,Canada,Iceland,Japan,2
3
+ What is the diameter of Earth?,6579 miles,8000 miles,16530 miles,2
4
+ In which country is the Simpson desert found?,Australia,US,Western Sahara,1
5
+ What was cause for the first complete reimplantation in history?,A female victim in a street masscure.,Work-related accident in a pineapple canning factory.,A boy tried hopping on a freight train.,3
6
+ Which nut has the highest protein content?,Almond,Cashews,Peanut,1
7
+ Which country has the most public holidays?,Netherland,Kazakhstan,Cambodia,3
8
+ How many legs does a caterpillar usually have?,Zero!!!,16,6,2
9
+ Which super power doesn't belong to a jellyfish?,Shutting down nuclear reactors,Self-cloning,Releasig toxin to posion paraistes,3
10
+ Which animal causes the most deaths in humankind?,Dogs,Crocodiles,Tsetse flies,1
11
+ Which is the most smellist animal in the world?,Lesser Anteater,Stink Bird,Tasmanian Devil,1
12
+ Which type of scan causes the least loss in Australia?,Dating,Threats to life,Online Shopping,3
13
+ Which is the most common lie on google search?,I will be there in 5 minutes.,I am sick...,I love you,2
14
+ Where is the world's saltiest water?,Dead Sea,Lake Don Juan,Chilka Lake,2
15
+ When did Parliament make slavery illegal in England?,2010,1833,1907,1
16
+ Which item in the bathroom has the most germs?,Bath towel,Lavatory,Toothbrush
@@ -0,0 +1,45 @@
1
+ module Features
2
+ def add_question()
3
+ require 'csv'
4
+ puts "Please enter your question"
5
+ print ">"
6
+ question=gets.chomp
7
+ puts "Please enter option 1"
8
+ print ">"
9
+ answer_1=gets.chomp
10
+ puts "Please enter option 2"
11
+ print ">"
12
+ answer_2=gets.chomp
13
+ puts "Please enter option 3"
14
+ print ">"
15
+ answer_3=gets.chomp
16
+
17
+ i=0
18
+ while i == 0
19
+ system("clear")
20
+ puts "-"*27
21
+ puts question
22
+ puts answer_1
23
+ puts answer_2
24
+ puts answer_3
25
+ puts "-"*27
26
+ puts
27
+ puts "Which is the correct answer (1-3)"
28
+ print ">"
29
+ input=gets.chomp.to_i
30
+ if input.between?(1,3)
31
+ correct_answer=input
32
+ i+=1
33
+ end
34
+ end
35
+ CSV.open("questions.csv","a") do |csv|
36
+ csv<<[question,answer_1,answer_2,answer_3,correct_answer]
37
+ sleep 1
38
+ puts "Question saved"
39
+ sleep 1
40
+ puts csv
41
+ gets
42
+ end
43
+ load './joyce_quiz_app_gem.rb'
44
+ end
45
+ end
data/lib/test.txt ADDED
@@ -0,0 +1,2 @@
1
+ admin
2
+ admin
data/lib/test_user.rb ADDED
@@ -0,0 +1,20 @@
1
+ class TestUser
2
+ attr_accessor :number_qs, :total_correct_answers, :finish_time, :accuracy
3
+ attr_reader :first_name, :last_name, :user_id
4
+ @@users=[]
5
+ @@no_users=0
6
+ def initialize(first_name,last_name)
7
+ @first_name=first_name
8
+ @last_name=last_name
9
+ @user_id=first_name.downcase+"_"+last_name.downcase
10
+ @number_qs = 10
11
+ @total_correct_answers = 5
12
+ @@users<<@user_id
13
+ if File.file?("tester_summary.csv")==false
14
+ CSV.open("tester_summary.csv","a+") do |csv|
15
+ csv<<["user_id","first_name","last_name","number_qs","total_correct_answers","accuracy","time"]
16
+ end
17
+ @@no_users+=1
18
+ end
19
+ end
20
+ end
data/lib/tester.rb ADDED
@@ -0,0 +1,120 @@
1
+ require_relative 'shared_features'
2
+ require_relative 'test_user'
3
+ include Features
4
+ require 'csv'
5
+ require 'tty-font'
6
+ require 'tty-prompt'
7
+ require 'date'
8
+ require 'colorize'
9
+
10
+ def name_check(name)
11
+ pass=0
12
+ fedup_level=0
13
+ while pass == 0 && fedup_level < 5
14
+ if name.include?(" ")
15
+ puts "Please try again, honestly I prefer one word only"
16
+ fedup_level+=1
17
+ name=gets.chomp.strip
18
+ elsif name.match? /\A[a-zA-Z'-]*\z/
19
+ pass+=1
20
+ return name
21
+ else
22
+ puts "Interesting name?! Please try again"
23
+ fedup_level+=1
24
+ name=gets.chomp.strip
25
+ end
26
+ end
27
+ puts "You are HOPELESS...Bye!"
28
+ exit
29
+ end
30
+
31
+ def prep_qs()
32
+ csv_text = File.read('questions.csv')
33
+ puts csv_text
34
+ csv_text=csv_text.chop
35
+ csv = CSV.parse(csv_text, headers: true)
36
+ question_list=[]
37
+ csv.each do |row|
38
+ row_data = row.to_hash
39
+ question_list<<row_data
40
+ end
41
+ question_list
42
+ end
43
+
44
+ def quiz(user,question_list)
45
+ user.number_qs+=1
46
+ question=question_list.sample
47
+ font = TTY::Font.new(:block)
48
+ prompt = TTY::Prompt.new
49
+ answer = prompt.select(font.write(Time.now.strftime("%k:%M.%S").strip) + "\n\n" + question["question"]) do |quiz|
50
+ quiz.default 1
51
+
52
+ quiz.choice question["answer_1"],1
53
+ quiz.choice question["answer_2"],2
54
+ quiz.choice question["answer_3"],3
55
+ system("clear")
56
+ end
57
+ if answer == question["correct_answer"].to_i
58
+ user.total_correct_answers+=1
59
+ end
60
+ end
61
+
62
+ def quiz_start(user,question_list)
63
+ start_time=Time.now
64
+ end_time=start_time+60
65
+ while Time.now < end_time
66
+ quiz(user,question_list)
67
+ end
68
+ end
69
+
70
+ def save(user)
71
+ user.finish_time = Time.now
72
+ user.accuracy=user.total_correct_answers/(user.number_qs*1.0)*100
73
+ user.accuracy=user.accuracy.round(2)
74
+ CSV.open("tester_summary.csv","a") do |csv|
75
+ csv<<[user.user_id,user.first_name,user.last_name,user.number_qs,user.total_correct_answers,user.accuracy,user.finish_time]
76
+ end
77
+ end
78
+
79
+ system('clear')
80
+ font = TTY::Font.new(:doom)
81
+ puts font.write("1 Min Quiz")
82
+ puts
83
+ system "echo 'Hello Tester!!!!!!!!!' | lolcat"
84
+ puts "First how should I address you?".green
85
+ name=gets.chomp.strip
86
+ first_name = name_check(name)
87
+ puts "Now tell me your last name".green
88
+ name = gets.chomp.strip
89
+ last_name = name_check(name)
90
+ user = TestUser.new(first_name,last_name)
91
+
92
+ question_list = prep_qs()
93
+ quiz_start(user,question_list)
94
+ system("clear")
95
+ font = TTY::Font.new(:block)
96
+ puts font.write("TIMEUP").red
97
+ sleep 1.5
98
+ system('clear')
99
+ save(user)
100
+
101
+ font = TTY::Font.new(:doom)
102
+ puts font.write("1 Min Quiz")
103
+ print "Your trivial awarness is "
104
+ puts user.accuracy.to_s.colorize(:color => :light_red, :background => :white) + " %" + " based on #{user.number_qs} questions"
105
+ prompt = TTY::Prompt.new
106
+ answer = prompt.select("") do |finish|
107
+ finish.default 1
108
+
109
+ finish.choice "Try again!",1
110
+ finish.choice "Feel like contributing?"+"\n",2
111
+ finish.choice "Back",3
112
+ end
113
+ case answer
114
+ when 1
115
+ quiz_start(user,question_list)
116
+ when 2
117
+ add_question()
118
+ else
119
+ load './joyce_quiz_app_gem.rb'
120
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: joyce_quiz_app_gem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joyce
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-10 00:00:00.000000000 Z
11
+ date: 2020-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -24,6 +24,88 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.8.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: tty-prompt
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.21.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.21.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: tty-font
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.5.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.5.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: lolcat
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '100.0'
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 100.0.1
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: '100.0'
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 100.0.1
75
+ - !ruby/object:Gem::Dependency
76
+ name: tty-table
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 0.11.0
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 0.11.0
89
+ - !ruby/object:Gem::Dependency
90
+ name: highline
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '2.0'
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: 2.0.3
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '2.0'
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: 2.0.3
27
109
  description: a gem that contains a short quiz
28
110
  email:
29
111
  - nokjo86@hotmail.com
@@ -35,13 +117,20 @@ files:
35
117
  - ".rspec"
36
118
  - ".travis.yml"
37
119
  - Gemfile
120
+ - Gemfile.lock
38
121
  - README.md
39
122
  - Rakefile
40
123
  - bin/console
41
124
  - bin/setup
42
125
  - joyce_quiz_app_gem.gemspec
126
+ - lib/creator.rb
43
127
  - lib/joyce_quiz_app_gem.rb
44
128
  - lib/joyce_quiz_app_gem/version.rb
129
+ - lib/questions.csv
130
+ - lib/shared_features.rb
131
+ - lib/test.txt
132
+ - lib/test_user.rb
133
+ - lib/tester.rb
45
134
  homepage: https://github.com/nokjo86/3_mins_quiz
46
135
  licenses: []
47
136
  metadata: {}