qti 0.9.6 → 0.9.7

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
  SHA1:
3
- metadata.gz: 2f8a13e1d1f49ef977d0e9fcffca98899e0b59d5
4
- data.tar.gz: cebe7aac11f9e878f87fc05a398ecb32a1043406
3
+ metadata.gz: 1aabd1fcd54402b41afeebc7bc69be6c86390a52
4
+ data.tar.gz: c2bed919eed81aeba3b0cb8f753c79f5d0f68be6
5
5
  SHA512:
6
- metadata.gz: 28eaf16eb8cb13ea332e08c51b6a8e0a7e5bfd70a28c6e1fdf0fbe7d0e4ffba0944b0e0ae941b52c14524b4bea904b6b9534af7c82dffad7432f5c456a94192a
7
- data.tar.gz: 548f9d865e9e0a44443bea2c3e8d6a8777d491eb46b553f0393984bfb92da051b96b936f1ff1aa8b799abc35d1ef8eb5a2445505b8e48abfe6977a612291ac87
6
+ metadata.gz: afeb012f7304d7952fe6f615eb8ddc74ab202f18ea9dcf012a3180d7b5ddbdd73c034eea72887c77382b49cc33d2bd558b6bfc209faa44d4d0fcf4ac2a7c16a6
7
+ data.tar.gz: 2ebe901bb7779a0cd972b54ad7108f59847361e47ae6c8964ba96dd10a707686174cfc719adf0ded99d0e5324a733442fee69b9a1a0ac91c4c1a4ca8123345ed
@@ -7,7 +7,8 @@ module Qti
7
7
  def self.matches(node, parent)
8
8
  return false if node.xpath('.//xmlns:other').present?
9
9
  matches = node.xpath('.//xmlns:render_fib')
10
- return false if matches.empty?
10
+ return false if matches.empty? ||
11
+ matches.first.attributes['fibtype']&.value == 'Decimal'
11
12
  new(node, parent)
12
13
  end
13
14
 
@@ -0,0 +1,51 @@
1
+ module Qti
2
+ module V1
3
+ module Models
4
+ module Interactions
5
+ class NumericInteraction < BaseInteraction
6
+ # This will know if a class matches
7
+ def self.matches(node, parent)
8
+ first_match = node.at_xpath('.//xmlns:render_fib')
9
+ return false unless first_match && first_match.attributes['fibtype']&.value == 'Decimal'
10
+ # exclude types other than "Exact response"
11
+ return false unless node.at_xpath('.//xmlns:varequal').present?
12
+ return false if node.xpath('.//xmlns:render_fib').count > 1
13
+ new(node, parent)
14
+ end
15
+
16
+ def item_body
17
+ @item_body ||= begin
18
+ node = @node.dup
19
+ presentation = node.at_xpath('.//xmlns:presentation')
20
+ mattext = presentation.at_xpath('.//xmlns:mattext')
21
+ inner_content = return_inner_content!(mattext)
22
+ sanitize_content!(inner_content)
23
+ end
24
+ end
25
+
26
+ def answers
27
+ @answers ||= answer_nodes.map do |node|
28
+ V1::Models::Choices::FillBlankChoice.new(node, self)
29
+ end
30
+ end
31
+
32
+ def scoring_data_structs
33
+ answer_nodes.map do |value_node|
34
+ ScoringData.new(
35
+ value_node.content,
36
+ nil,
37
+ id: value_node.attributes['respident']&.value
38
+ )
39
+ end
40
+ end
41
+
42
+ private
43
+
44
+ def answer_nodes
45
+ @node.xpath('.//xmlns:varequal')
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -1,3 +1,3 @@
1
1
  module Qti
2
- VERSION = '0.9.6'.freeze
2
+ VERSION = '0.9.7'.freeze
3
3
  end
@@ -0,0 +1,89 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <questestinterop xmlns="http://www.imsglobal.org/xsd/ims_qtiasiv1p2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/ims_qtiasiv1p2 http://www.imsglobal.org/xsd/ims_qtiasiv1p2p1.xsd">
3
+ <assessment ident="i98661073a66c6b2567c8f9b1a22c2988" title="Quiz1.1">
4
+ <section ident="root_section">
5
+ <item ident="ia63b6a115fa68a555398a58626a62f81" title="Question1">
6
+ <presentation>
7
+ <material>
8
+ <mattext texttype="text/html">&lt;div&gt;&lt;p&gt;question 1&lt;/p&gt;&lt;/div&gt;</mattext>
9
+ </material>
10
+ <response_str ident="response1" rcardinality="Single">
11
+ <render_fib fibtype="Decimal">
12
+ <response_label ident="answer1"/>
13
+ </render_fib>
14
+ </response_str>
15
+ </presentation>
16
+ <resprocessing>
17
+ <outcomes>
18
+ <decvar maxvalue="100" minvalue="0" varname="SCORE" vartype="Decimal"/>
19
+ </outcomes>
20
+ <respcondition continue="No">
21
+ <conditionvar>
22
+ <or>
23
+ <varequal respident="response1">1234.0</varequal>
24
+ <and>
25
+ <vargte respident="response1">1234.0</vargte>
26
+ <varlte respident="response1">1234.0</varlte>
27
+ </and>
28
+ </or>
29
+ </conditionvar>
30
+ <setvar action="Set" varname="SCORE">100</setvar>
31
+ </respcondition>
32
+ </resprocessing>
33
+ </item>
34
+ <item ident="i62e978ad510f5b51f61e1073df6357df" title="Question2">
35
+ <presentation>
36
+ <material>
37
+ <mattext texttype="text/html">&lt;div&gt;&lt;p&gt;question 2&lt;/p&gt;&lt;/div&gt;</mattext>
38
+ </material>
39
+ <response_str ident="response1" rcardinality="Single">
40
+ <render_fib fibtype="Decimal">
41
+ <response_label ident="answer1"/>
42
+ </render_fib>
43
+ </response_str>
44
+ </presentation>
45
+ <resprocessing>
46
+ <outcomes>
47
+ <decvar maxvalue="100" minvalue="0" varname="SCORE" vartype="Decimal"/>
48
+ </outcomes>
49
+ <respcondition continue="No">
50
+ <conditionvar>
51
+ <or>
52
+ <varequal respident="response1">4321.0</varequal>
53
+ <and>
54
+ <vargte respident="response1">4321.0</vargte>
55
+ <varlte respident="response1">4321.0</varlte>
56
+ </and>
57
+ </or>
58
+ </conditionvar>
59
+ <setvar action="Set" varname="SCORE">100</setvar>
60
+ </respcondition>
61
+ <respcondition continue="No">
62
+ <conditionvar>
63
+ <or>
64
+ <varequal respident="response1">1234.0</varequal>
65
+ <and>
66
+ <vargte respident="response1">1234.0</vargte>
67
+ <varlte respident="response1">1234.0</varlte>
68
+ </and>
69
+ </or>
70
+ </conditionvar>
71
+ <setvar action="Set" varname="SCORE">100</setvar>
72
+ </respcondition>
73
+ <respcondition continue="No">
74
+ <conditionvar>
75
+ <or>
76
+ <varequal respident="response1">1111.0</varequal>
77
+ <and>
78
+ <vargte respident="response1">1111.0</vargte>
79
+ <varlte respident="response1">1111.0</varlte>
80
+ </and>
81
+ </or>
82
+ </conditionvar>
83
+ <setvar action="Set" varname="SCORE">100</setvar>
84
+ </respcondition>
85
+ </resprocessing>
86
+ </item>
87
+ </section>
88
+ </assessment>
89
+ </questestinterop>
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../..
3
3
  specs:
4
- qti (0.9.5)
4
+ qti (0.9.7)
5
5
  activesupport (>= 4.2.9, < 5.2)
6
6
  dry-struct (~> 0.2.1)
7
7
  dry-types (~> 0.12.0)
@@ -29,7 +29,7 @@ GEM
29
29
  dry-container (0.6.0)
30
30
  concurrent-ruby (~> 1.0)
31
31
  dry-configurable (~> 0.1, >= 0.1.3)
32
- dry-core (0.4.1)
32
+ dry-core (0.4.2)
33
33
  concurrent-ruby (~> 1.0)
34
34
  dry-equalizer (0.2.0)
35
35
  dry-logic (0.4.2)
@@ -61,29 +61,29 @@ GEM
61
61
  mini_portile2 (~> 2.3.0)
62
62
  nokogumbo (1.4.13)
63
63
  nokogiri
64
- parallel (1.12.0)
65
- parser (2.4.0.0)
66
- ast (~> 2.2)
64
+ parallel (1.12.1)
65
+ parser (2.4.0.2)
66
+ ast (~> 2.3)
67
67
  powerpack (0.1.1)
68
- pry (0.11.1)
68
+ pry (0.11.3)
69
69
  coderay (~> 1.1.0)
70
70
  method_source (~> 0.9.0)
71
71
  rainbow (2.2.2)
72
72
  rake
73
73
  rake (0.9.6)
74
- rspec (3.6.0)
75
- rspec-core (~> 3.6.0)
76
- rspec-expectations (~> 3.6.0)
77
- rspec-mocks (~> 3.6.0)
78
- rspec-core (3.6.0)
79
- rspec-support (~> 3.6.0)
80
- rspec-expectations (3.6.0)
74
+ rspec (3.7.0)
75
+ rspec-core (~> 3.7.0)
76
+ rspec-expectations (~> 3.7.0)
77
+ rspec-mocks (~> 3.7.0)
78
+ rspec-core (3.7.0)
79
+ rspec-support (~> 3.7.0)
80
+ rspec-expectations (3.7.0)
81
81
  diff-lcs (>= 1.2.0, < 2.0)
82
- rspec-support (~> 3.6.0)
83
- rspec-mocks (3.6.0)
82
+ rspec-support (~> 3.7.0)
83
+ rspec-mocks (3.7.0)
84
84
  diff-lcs (>= 1.2.0, < 2.0)
85
- rspec-support (~> 3.6.0)
86
- rspec-support (3.6.0)
85
+ rspec-support (~> 3.7.0)
86
+ rspec-support (3.7.0)
87
87
  rubocop (0.50.0)
88
88
  parallel (~> 1.10)
89
89
  parser (>= 2.3.3.1, < 3.0)
@@ -91,7 +91,7 @@ GEM
91
91
  rainbow (>= 2.2.2, < 3.0)
92
92
  ruby-progressbar (~> 1.7)
93
93
  unicode-display_width (~> 1.0, >= 1.0.1)
94
- ruby-progressbar (1.8.3)
94
+ ruby-progressbar (1.9.0)
95
95
  rubyzip (1.2.1)
96
96
  sanitize (4.5.0)
97
97
  crass (~> 1.0.2)
@@ -125,4 +125,4 @@ DEPENDENCIES
125
125
  wwtd (~> 1.3)
126
126
 
127
127
  BUNDLED WITH
128
- 1.15.4
128
+ 1.16.0
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ describe Qti::V1::Models::Interactions::NumericInteraction do
4
+ let(:fixtures_path) { File.join('spec', 'fixtures', 'items_1.2') }
5
+ let(:file_path) { File.join(fixtures_path, 'numeric.xml') }
6
+ let(:test_object) { Qti::V1::Models::Assessment.from_path!(file_path) }
7
+ let(:assessment_item_refs) { test_object.assessment_items }
8
+
9
+ shared_examples_for 'answers' do
10
+ it 'returns the answers' do
11
+ expect(loaded_class.answers.count).to eq answer_count
12
+ expect(loaded_class.answers.first).to be_an_instance_of(Qti::V1::Models::Choices::FillBlankChoice)
13
+ end
14
+ end
15
+
16
+ shared_examples_for 'scoring_data_structs' do
17
+ it 'returns the scoring_data_structs' do
18
+ expect(loaded_class.scoring_data_structs.map(&:id)).to eq(scoring_data_ids)
19
+ expect(loaded_class.scoring_data_structs.map(&:values)).to eq(scoring_data_values)
20
+ end
21
+ end
22
+
23
+ context 'the first item in numeric.xml' do
24
+ let(:loaded_class) { described_class.new(assessment_item_refs.first, test_object) }
25
+ let(:scoring_data_ids) { %w[response1] }
26
+ let(:scoring_data_values) { %w[1234.0] }
27
+ let(:answer_count) { 1 }
28
+
29
+ include_examples 'answers'
30
+ include_examples 'scoring_data_structs'
31
+ end
32
+
33
+ context 'the second item in numeric.xml' do
34
+ let(:loaded_class) { described_class.new(assessment_item_refs[1], test_object) }
35
+ let(:scoring_data_ids) { %w[response1 response1 response1] }
36
+ let(:scoring_data_values) { %w[4321.0 1234.0 1111.0] }
37
+ let(:answer_count) { 3 }
38
+
39
+ include_examples 'answers'
40
+ include_examples 'scoring_data_structs'
41
+ end
42
+
43
+ context '#item_body' do
44
+ let(:loaded_class) { described_class.new(assessment_item_refs.first, test_object) }
45
+ it 'returns right title' do
46
+ expect(loaded_class.item_body).to eq '<div><p>question 1</p></div>'
47
+ end
48
+ end
49
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qti
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.6
4
+ version: 0.9.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hannah Bottalla
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-12-14 00:00:00.000000000 Z
12
+ date: 2018-01-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -272,6 +272,7 @@ files:
272
272
  - lib/qti/v1/models/interactions/choice_interaction.rb
273
273
  - lib/qti/v1/models/interactions/fill_blank_interaction.rb
274
274
  - lib/qti/v1/models/interactions/match_interaction.rb
275
+ - lib/qti/v1/models/interactions/numeric_interaction.rb
275
276
  - lib/qti/v1/models/interactions/ordering_interaction.rb
276
277
  - lib/qti/v1/models/interactions/string_interaction.rb
277
278
  - lib/qti/v1/models/scoring_data.rb
@@ -304,6 +305,7 @@ files:
304
305
  - spec/fixtures/items_1.2/multiple_answer.xml
305
306
  - spec/fixtures/items_1.2/multiple_answer_canvas.xml
306
307
  - spec/fixtures/items_1.2/multiple_choice.xml
308
+ - spec/fixtures/items_1.2/numeric.xml
307
309
  - spec/fixtures/items_1.2/ordering.xml
308
310
  - spec/fixtures/items_1.2/single_fib.xml
309
311
  - spec/fixtures/items_1.2/true_false.xml
@@ -503,19 +505,13 @@ files:
503
505
  - spec/fixtures/tests/tests/rtest27.xml
504
506
  - spec/fixtures/unsupported_version/imsmanifest.xml
505
507
  - spec/gemfiles/nokogiri-1.6.gemfile
506
- - spec/gemfiles/nokogiri-1.6.gemfile.lock
507
508
  - spec/gemfiles/nokogiri-1.8.gemfile
508
509
  - spec/gemfiles/nokogiri-1.8.gemfile.lock
509
510
  - spec/gemfiles/rails-4.2.gemfile
510
- - spec/gemfiles/rails-4.2.gemfile.lock
511
511
  - spec/gemfiles/rails-5.0.gemfile
512
- - spec/gemfiles/rails-5.0.gemfile.lock
513
512
  - spec/gemfiles/rails-5.1.gemfile
514
- - spec/gemfiles/rails-5.1.gemfile.lock
515
513
  - spec/gemfiles/sanitize-4.2.gemfile
516
- - spec/gemfiles/sanitize-4.2.gemfile.lock
517
514
  - spec/gemfiles/sanitize-4.5.gemfile
518
- - spec/gemfiles/sanitize-4.5.gemfile.lock
519
515
  - spec/lib/qti/assessment_item_exporter_spec.rb
520
516
  - spec/lib/qti/exporter_spec.rb
521
517
  - spec/lib/qti/models/base_spec.rb
@@ -528,6 +524,7 @@ files:
528
524
  - spec/lib/qti/v1/models/interactions/choice_interaction_spec.rb
529
525
  - spec/lib/qti/v1/models/interactions/fill_blank_interaction_spec.rb
530
526
  - spec/lib/qti/v1/models/interactions/match_interaction_spec.rb
527
+ - spec/lib/qti/v1/models/interactions/numeric_interaction_spec.rb
531
528
  - spec/lib/qti/v1/models/interactions/ordering_interaction_spec.rb
532
529
  - spec/lib/qti/v1/models/interactions/string_interaction_spec.rb
533
530
  - spec/lib/qti/v2/models/assessment_item_spec.rb
@@ -568,7 +565,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
568
565
  version: '0'
569
566
  requirements: []
570
567
  rubyforge_project:
571
- rubygems_version: 2.6.8
568
+ rubygems_version: 2.6.13
572
569
  signing_key:
573
570
  specification_version: 4
574
571
  summary: QTI 1.2 and 2.1 import and export models
@@ -581,6 +578,7 @@ test_files:
581
578
  - spec/fixtures/items_1.2/multiple_answer.xml
582
579
  - spec/fixtures/items_1.2/multiple_answer_canvas.xml
583
580
  - spec/fixtures/items_1.2/multiple_choice.xml
581
+ - spec/fixtures/items_1.2/numeric.xml
584
582
  - spec/fixtures/items_1.2/ordering.xml
585
583
  - spec/fixtures/items_1.2/single_fib.xml
586
584
  - spec/fixtures/items_1.2/true_false.xml
@@ -780,19 +778,13 @@ test_files:
780
778
  - spec/fixtures/tests/tests/rtest27.xml
781
779
  - spec/fixtures/unsupported_version/imsmanifest.xml
782
780
  - spec/gemfiles/nokogiri-1.6.gemfile
783
- - spec/gemfiles/nokogiri-1.6.gemfile.lock
784
781
  - spec/gemfiles/nokogiri-1.8.gemfile
785
782
  - spec/gemfiles/nokogiri-1.8.gemfile.lock
786
783
  - spec/gemfiles/rails-4.2.gemfile
787
- - spec/gemfiles/rails-4.2.gemfile.lock
788
784
  - spec/gemfiles/rails-5.0.gemfile
789
- - spec/gemfiles/rails-5.0.gemfile.lock
790
785
  - spec/gemfiles/rails-5.1.gemfile
791
- - spec/gemfiles/rails-5.1.gemfile.lock
792
786
  - spec/gemfiles/sanitize-4.2.gemfile
793
- - spec/gemfiles/sanitize-4.2.gemfile.lock
794
787
  - spec/gemfiles/sanitize-4.5.gemfile
795
- - spec/gemfiles/sanitize-4.5.gemfile.lock
796
788
  - spec/lib/qti/assessment_item_exporter_spec.rb
797
789
  - spec/lib/qti/exporter_spec.rb
798
790
  - spec/lib/qti/models/base_spec.rb
@@ -805,6 +797,7 @@ test_files:
805
797
  - spec/lib/qti/v1/models/interactions/choice_interaction_spec.rb
806
798
  - spec/lib/qti/v1/models/interactions/fill_blank_interaction_spec.rb
807
799
  - spec/lib/qti/v1/models/interactions/match_interaction_spec.rb
800
+ - spec/lib/qti/v1/models/interactions/numeric_interaction_spec.rb
808
801
  - spec/lib/qti/v1/models/interactions/ordering_interaction_spec.rb
809
802
  - spec/lib/qti/v1/models/interactions/string_interaction_spec.rb
810
803
  - spec/lib/qti/v2/models/assessment_item_spec.rb
@@ -1,127 +0,0 @@
1
- PATH
2
- remote: ../..
3
- specs:
4
- qti (0.9.3)
5
- activesupport (>= 4.2.9, < 5.2)
6
- dry-struct (~> 0.2.1)
7
- dry-types (~> 0.12.0)
8
- nokogiri (>= 1.6.8, < 1.9)
9
- rubyzip (~> 1.2)
10
- sanitize (>= 4.2.0, < 5.0)
11
-
12
- GEM
13
- remote: https://rubygems.org/
14
- specs:
15
- activesupport (5.1.4)
16
- concurrent-ruby (~> 1.0, >= 1.0.2)
17
- i18n (~> 0.7)
18
- minitest (~> 5.1)
19
- tzinfo (~> 1.1)
20
- ast (2.3.0)
21
- byebug (9.1.0)
22
- coderay (1.1.2)
23
- concurrent-ruby (1.0.5)
24
- crass (1.0.2)
25
- diff-lcs (1.3)
26
- docile (1.1.5)
27
- dry-configurable (0.7.0)
28
- concurrent-ruby (~> 1.0)
29
- dry-container (0.6.0)
30
- concurrent-ruby (~> 1.0)
31
- dry-configurable (~> 0.1, >= 0.1.3)
32
- dry-core (0.3.4)
33
- concurrent-ruby (~> 1.0)
34
- dry-equalizer (0.2.0)
35
- dry-logic (0.4.2)
36
- dry-container (~> 0.2, >= 0.2.6)
37
- dry-core (~> 0.2)
38
- dry-equalizer (~> 0.2)
39
- dry-struct (0.2.1)
40
- dry-configurable (~> 0.1)
41
- dry-equalizer (~> 0.2)
42
- dry-types (~> 0.9, >= 0.9.0)
43
- ice_nine (~> 0.11)
44
- dry-types (0.12.0)
45
- concurrent-ruby (~> 1.0)
46
- dry-configurable (~> 0.1)
47
- dry-container (~> 0.3)
48
- dry-core (~> 0.2, >= 0.2.1)
49
- dry-equalizer (~> 0.2)
50
- dry-logic (~> 0.4, >= 0.4.2)
51
- inflecto (~> 0.0.0, >= 0.0.2)
52
- i18n (0.8.6)
53
- ice_nine (0.11.2)
54
- inflecto (0.0.2)
55
- json (2.1.0)
56
- method_source (0.9.0)
57
- mini_portile2 (2.1.0)
58
- minitest (5.10.3)
59
- nokogiri (1.6.8.1)
60
- mini_portile2 (~> 2.1.0)
61
- nokogumbo (1.4.13)
62
- nokogiri
63
- parallel (1.12.0)
64
- parser (2.4.0.0)
65
- ast (~> 2.2)
66
- powerpack (0.1.1)
67
- pry (0.11.1)
68
- coderay (~> 1.1.0)
69
- method_source (~> 0.9.0)
70
- rainbow (2.2.2)
71
- rake
72
- rake (0.9.6)
73
- rspec (3.6.0)
74
- rspec-core (~> 3.6.0)
75
- rspec-expectations (~> 3.6.0)
76
- rspec-mocks (~> 3.6.0)
77
- rspec-core (3.6.0)
78
- rspec-support (~> 3.6.0)
79
- rspec-expectations (3.6.0)
80
- diff-lcs (>= 1.2.0, < 2.0)
81
- rspec-support (~> 3.6.0)
82
- rspec-mocks (3.6.0)
83
- diff-lcs (>= 1.2.0, < 2.0)
84
- rspec-support (~> 3.6.0)
85
- rspec-support (3.6.0)
86
- rubocop (0.50.0)
87
- parallel (~> 1.10)
88
- parser (>= 2.3.3.1, < 3.0)
89
- powerpack (~> 0.1)
90
- rainbow (>= 2.2.2, < 3.0)
91
- ruby-progressbar (~> 1.7)
92
- unicode-display_width (~> 1.0, >= 1.0.1)
93
- ruby-progressbar (1.8.3)
94
- rubyzip (1.2.1)
95
- sanitize (4.5.0)
96
- crass (~> 1.0.2)
97
- nokogiri (>= 1.4.4)
98
- nokogumbo (~> 1.4.1)
99
- simplecov (0.15.1)
100
- docile (~> 1.1.0)
101
- json (>= 1.8, < 3)
102
- simplecov-html (~> 0.10.0)
103
- simplecov-html (0.10.2)
104
- thread_safe (0.3.6)
105
- tzinfo (1.2.3)
106
- thread_safe (~> 0.1)
107
- unicode-display_width (1.3.0)
108
- wwtd (1.3.0)
109
-
110
- PLATFORMS
111
- ruby
112
-
113
- DEPENDENCIES
114
- bundler (~> 1.15)
115
- byebug (~> 9.0)
116
- nokogiri (~> 1.6.8)
117
- pry (~> 0)
118
- qti!
119
- rake (~> 0)
120
- rspec (~> 3.6)
121
- rspec-mocks (~> 3.6)
122
- rubocop (~> 0.50.0)
123
- simplecov (~> 0)
124
- wwtd (~> 1.3)
125
-
126
- BUNDLED WITH
127
- 1.15.4