ruql 0.1.4 → 0.1.5

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
  SHA1:
3
- metadata.gz: c4e1dbaefe63c93236938687254c7eb6dcaf0bc3
4
- data.tar.gz: 8dfd7eaac4c4f363ed8bf83be5f72d1c428a117e
3
+ metadata.gz: 1a384710404460b95c945d6a1fb850c88531db8a
4
+ data.tar.gz: 5c6af8b878133a20c3f7b0e4e38a184b4b0b7400
5
5
  SHA512:
6
- metadata.gz: d859ea182e95f44111181c4e61c4cdb69320cde8ae30af8bdd446bc7f3c89d797cbdcc9e36628976f2c1d8f5a8f6a6a9aea67a19db2aecc47a01896325d0ce46
7
- data.tar.gz: 35f46ed721d7987109cc7f187b3ca531ebe953736576c6dbf9607a793ace9d72d0c8b151bed950ad960415f2fe79c12a51260d24e58c1c8eabd74ee40f348bc8
6
+ metadata.gz: feb04ca43e5e83c6e6a97f042ab03b3692663a23f835783121edd68bc3ebba1b3ffe728ab682edf053055ef64222625cf8f056a93112ebc287314f475edb0f4a
7
+ data.tar.gz: 0414a7abbd51a50703b290c2a912575b6fbaead7330cfbcede247950dd67e0e4d84a6f6e6d35120d26e8fdbcb37a6b103c75d512211e16b9db8eb2fcdc2b5736
data/bin/ruql CHANGED
@@ -98,6 +98,7 @@ def main
98
98
  raise "Unknown renderer '#{renderer}'" unless Quiz.get_renderer(renderer)
99
99
 
100
100
  opts = Getopt::Long.getopts(
101
+ ['-v', '--version', Getopt::BOOLEAN],
101
102
  ['-o', '--list-type', Getopt::REQUIRED],
102
103
  ['-r', '--report', Getopt::REQUIRED],
103
104
  ['-a', '--start', Getopt::REQUIRED],
data/lib/ruql/answer.rb CHANGED
@@ -7,11 +7,12 @@ class Answer
7
7
 
8
8
  def <=>(other) ; self.answer_text <=> other.answer_text ; end
9
9
  def correct? ; !!correct ; end
10
- def has_explanation? ; !!explanation ; end
11
- def initialize(answer_text = '', correct = false, explanation=nil)
10
+ def has_explanation? ; @explanation.to_s != '' ; end
11
+ def initialize(answer_text = '', correct = false, explanation=nil, question=nil)
12
12
  @answer_text = answer_text
13
13
  @correct = !!correct # ensure boolean
14
14
  @explanation = explanation
15
+ @question = question
15
16
  end
16
17
 
17
18
  def to_JSON
data/lib/ruql/question.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  class Question
2
2
  attr_accessor :question_text,
3
- :answers,
3
+ :answers,
4
4
  :question_image,
5
5
  :randomize,
6
6
  :points,
@@ -19,28 +19,35 @@ class Question
19
19
  @question_image = options[:image]
20
20
  @question_tags = []
21
21
  @question_uid = (options.delete(:uid) || SecureRandom.uuid).to_s
22
+ @explanation = nil
22
23
  @question_comment = ''
23
24
  end
24
25
  def raw? ; !!@raw ; end
25
26
 
27
+ def has_explanation? ; @explanation.to_s != '' ; end
28
+
29
+ def explanation(text=nil)
30
+ if text
31
+ @explanation = text
32
+ else
33
+ @explanation
34
+ end
35
+ end
36
+
26
37
  def uid(u) ; @question_uid = u ; end
27
38
 
28
39
  def text(s) ; @question_text = s ; end
29
40
 
30
- def explanation(text)
31
- @answers.each { |answer| answer.explanation ||= text }
32
- end
33
-
34
41
  def image(url)
35
42
  @question_image = url
36
43
  end
37
44
 
38
45
  def answer(text, opts={})
39
- @answers << Answer.new(text, correct=true, opts[:explanation])
46
+ @answers << Answer.new(text, correct=true, opts[:explanation], self)
40
47
  end
41
48
 
42
49
  def distractor(text, opts={})
43
- @answers << Answer.new(text, correct=false, opts[:explanation])
50
+ @answers << Answer.new(text, correct=false, opts[:explanation], self)
44
51
  end
45
52
 
46
53
  # these are ignored but legal for now:
@@ -62,6 +62,10 @@ class Html5Renderer
62
62
  if q.raw? then @h.li { |l| l << answer.answer_text } else @h.li answer.answer_text end
63
63
  end
64
64
  end
65
+ if @show_solutions && ((exp = q.explanation.to_s) != '')
66
+ @h.br
67
+ if q.raw? then @h.span(:class => 'explanation') { |p| p << exp } else @h.span(exp, :class => 'explanation') end
68
+ end
65
69
  end
66
70
  end
67
71
  self
@@ -100,10 +104,10 @@ class Html5Renderer
100
104
  answer.correct? ? "CORRECT: " : "INCORRECT: ")
101
105
  end
102
106
  @h.li(args) do
103
- if raw then @h.p { |p| p << answer.answer_text } else @h.p answer.answer_text end
107
+ if raw then @h.span { |p| p << answer.answer_text } else @h.span answer.answer_text end
104
108
  if answer.has_explanation?
105
- if raw then @h.p(:class => 'explanation') { |p| p << answer.explanation }
106
- else @h.p(answer.explanation, :class => 'explanation') end
109
+ @h.br
110
+ if raw then @h.span(:class => 'explanation') { |p| p << answer.explanation } else @h.span(answer.explanation, :class => 'explanation') end
107
111
  end
108
112
  end
109
113
  end
metadata CHANGED
@@ -1,71 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Armando Fox
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-06 00:00:00.000000000 Z
11
+ date: 2016-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: builder
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - ">="
16
+ - - '>='
18
17
  - !ruby/object:Gem::Version
19
18
  version: '3.0'
20
- type: :runtime
21
19
  prerelease: false
20
+ name: builder
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
- - - ">="
23
+ - - '>='
25
24
  - !ruby/object:Gem::Version
26
25
  version: '3.0'
26
+ type: :runtime
27
27
  - !ruby/object:Gem::Dependency
28
- name: getopt
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - ">="
30
+ - - '>='
32
31
  - !ruby/object:Gem::Version
33
32
  version: '1.0'
34
- type: :runtime
35
33
  prerelease: false
34
+ name: getopt
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
- - - ">="
37
+ - - '>='
39
38
  - !ruby/object:Gem::Version
40
39
  version: '1.0'
40
+ type: :runtime
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
- - - ">="
44
+ - - '>='
46
45
  - !ruby/object:Gem::Version
47
46
  version: '2.0'
48
- type: :development
49
47
  prerelease: false
48
+ name: rspec
50
49
  version_requirements: !ruby/object:Gem::Requirement
51
50
  requirements:
52
- - - ">="
51
+ - - '>='
53
52
  - !ruby/object:Gem::Version
54
53
  version: '2.0'
54
+ type: :development
55
55
  - !ruby/object:Gem::Dependency
56
- name: activesupport
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
- - - "~>"
58
+ - - ~>
60
59
  - !ruby/object:Gem::Version
61
60
  version: '4.0'
62
- type: :development
63
61
  prerelease: false
62
+ name: activesupport
64
63
  version_requirements: !ruby/object:Gem::Requirement
65
64
  requirements:
66
- - - "~>"
65
+ - - ~>
67
66
  - !ruby/object:Gem::Version
68
67
  version: '4.0'
68
+ type: :development
69
69
  description: Ruby-embedded DSL for creating short-answer quiz questions
70
70
  email: fox@cs.berkeley.edu
71
71
  executables:
@@ -109,17 +109,17 @@ require_paths:
109
109
  - lib
110
110
  required_ruby_version: !ruby/object:Gem::Requirement
111
111
  requirements:
112
- - - ">="
112
+ - - '>='
113
113
  - !ruby/object:Gem::Version
114
114
  version: '0'
115
115
  required_rubygems_version: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - ">="
117
+ - - '>='
118
118
  - !ruby/object:Gem::Version
119
119
  version: '0'
120
120
  requirements: []
121
121
  rubyforge_project:
122
- rubygems_version: 2.5.1
122
+ rubygems_version: 2.2.5
123
123
  signing_key:
124
124
  specification_version: 4
125
125
  summary: Ruby question language