one44-cli 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: be80efae9e104478942b455965752f6f062dd49c84a94a11fff7c5e062039258
4
- data.tar.gz: ad0eb206e009b087c73545345b3df53cb653e1358d3df50f01ec6e35a85d64cf
3
+ metadata.gz: 79b8c6389f90c0394b0cb266a7979a3c982b4e1286321979c21edd9ad94140df
4
+ data.tar.gz: 4f50eb532f3ffea32c336d1a01cdd58b43a26865243fe4039764485b33726cb3
5
5
  SHA512:
6
- metadata.gz: 5dc34c9522743cebdb04e4a0cfca23dffe85d7cf82ed70eb029c8c0a98ff0ae76894b3bdb0c586f48a2f06e9d95bbbf2d01f4e0ac00db214a20e9def427b539a
7
- data.tar.gz: fd166a7d2141cb87322270ac7a99560986e10e6cb4318da1e3362a00aed406edc78e29b303301f937217638e1de83d62af529e4d9ae120c046dbfa9b37b6debc
6
+ metadata.gz: 7535cdcd2b0bdb35d694cf54c4594179fcbfb2067f6e23aa3e8186a95605e31682d594a51c8b127a7159b4c237c5c51f95dd2584680c07c9fd73ebb8faaedcd8
7
+ data.tar.gz: dfb7636dadb728156c71194fbab1fd0dc897e8349c8e4c4854a1dc8182c09177c62ef67d59af12e262ae2d8d43cb63eab5ad8f331615e425ea2ef90cfa45a47c
data/README.md CHANGED
@@ -8,20 +8,28 @@ Install the gem:
8
8
  `gem install one44-cli`
9
9
 
10
10
  ## How to use
11
+ Create a test file containing math problems:
11
12
 
12
- ### Randomly order test questions (default)
13
- Test questions are randomly ordered. Make the behaviour explicit by specifying one of the options below:
13
+ E.g
14
+ ```testfileexample
15
+ 1x1 2x2 3x3
16
+ 4x4 5x5 6x6
17
+ ```
14
18
 
15
- $`one44-cli`
19
+ Run `one44-cli` as follows:
16
20
 
17
- $`one44-cli -r`
21
+ $`one44-cli -f path/to/test/file`
18
22
 
19
- $`one44-cli --random-sort-questions`
23
+ ### Do not randomly order test questions (default)
24
+ Test questions will be ordered as listed in the test file if the `--not-random-sort-questions` is specified:
20
25
 
21
- $`one44-cli --sort-questions random`
26
+ $`one44-cli --not-random-sort-questions`
22
27
 
28
+ ### Randomly order test questions
29
+ Test questions are randomly ordered by specifying one of the options below:
23
30
 
24
- ### Do not randomly order test questions
25
- Test questions will be ordered as listed if the `--not-random-sort-questions` is specified:
31
+ $`one44-cli -r`
26
32
 
27
- $`one44-cli --not-random-sort-questions`
33
+ $`one44-cli --random-sort-questions`
34
+
35
+ $`one44-cli --sort-questions random`
data/bin/one44-cli CHANGED
@@ -10,10 +10,10 @@ include One44::Adaptors::IO::CLI
10
10
  include One44::CLI::Helpers
11
11
  include One44::CLI::Optparse
12
12
 
13
+ options = One44::CLI::Optparse::Parser.parse(ARGV)
13
14
  test = One44::Test.new($stdout)
14
15
 
15
- ordered_questions = $one44_cli_options[:question_order] == :random ? randomise(questions) : questions
16
- test.start('indigo', ordered_questions)
16
+ test.start(options[:test], ordered_questions(options[:test], options[:question_order]))
17
17
  test.questions.each_with_index do |_question, index|
18
18
  test.provide clean(answer), index
19
19
  $stdout.puts
@@ -13,12 +13,16 @@ module One44
13
13
  nil
14
14
  end
15
15
 
16
+ def ordered_questions(test, question_order)
17
+ question_order == :random ? randomise(questions_from(test)) : questions_from(test)
18
+ end
19
+
16
20
  def randomise(questions)
17
21
  questions.shuffle
18
22
  end
19
23
 
20
- def questions
21
- load_tests_from_csv_file('bin/tests/Advanced Indigo.txt', "\t\t")
24
+ def questions_from(test)
25
+ load_tests_from_csv_file(test, "\t\t")
22
26
  end
23
27
  end
24
28
  end
@@ -5,24 +5,40 @@ module One44
5
5
  module Optparse
6
6
  require 'optparse'
7
7
 
8
- $one44_cli_options = {}
9
- option_parser = OptionParser.new do |opts|
10
- opts.on('-r', '--random-sort-questions') do
11
- $one44_cli_options[:random_sort_questions] = true
12
- end
8
+ class Parser
9
+ def self.parse(args)
10
+ options = {}
11
+ option_parser = OptionParser.new do |opts|
12
+ opts.on('-r', '--random-sort-questions') do
13
+ options[:random_sort_questions] = true
14
+ end
13
15
 
14
- opts.on('--not-random-sort-questions') do
15
- $one44_cli_options[:random_sort_questions] = false
16
- end
16
+ opts.on('--not-random-sort-questions') do
17
+ options[:random_sort_questions] = false
18
+ end
19
+
20
+ opts.on('-s ORDER', '--sort-questions=ORDER', /^random$/i) do |order|
21
+ options[:question_order] = order.downcase.to_sym
22
+ end
17
23
 
18
- opts.on('-s ORDER', '--sort-questions=ORDER', /^random$/i) do |order|
19
- $one44_cli_options[:question_order] = order.downcase.to_sym
24
+ opts.on('-f TEST', '--path-to-test-file=TEST', '[Mandatory] Specify the path to the test file.') do |test|
25
+ options[:test] = test
26
+ end
27
+ end
28
+ process_options(option_parser, options, args)
20
29
  end
21
- end
22
- option_parser.parse!
23
30
 
24
- unless $one44_cli_options&.dig(:question_order)
25
- $one44_cli_options[:question_order] = :random unless $one44_cli_options&.dig(:random_sort_questions) == false
31
+ def self.process_options(option_parser, options, args)
32
+ option_parser.parse!(args)
33
+ unless options[:test]
34
+ puts option_parser.help
35
+ exit 1
36
+ end
37
+ options
38
+ rescue Exception => e
39
+ puts "Exception encountered: #{e}"
40
+ exit 1
41
+ end
26
42
  end
27
43
  end
28
44
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module One44
4
4
  module CLI
5
- VERSION = '0.1.1'
5
+ VERSION = '0.1.3'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: one44-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Bonsu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-13 00:00:00.000000000 Z
11
+ date: 2021-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: one44
@@ -24,6 +24,76 @@ dependencies:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.0.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: aruba
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.1.1
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 1.1.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: cucumber
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 3.1.2
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 3.1.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 3.9.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 3.9.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec-wait
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 0.0.9
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 0.0.9
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 0.91.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 0.91.0
27
97
  description: Marks math problems
28
98
  email: adam@bonsu.io
29
99
  executables: