one44-cli 0.1.1 → 0.1.3

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: 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: