qti 0.2.14 → 0.2.15

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: 7e3dbac8ff4eda0f1c6f67c6f8e7e1673ac8014b
4
- data.tar.gz: 807c9a6be3ea4e1887966bb5734015dc017efa04
3
+ metadata.gz: c46f07dd942e7712d82929de86e9395708c3087f
4
+ data.tar.gz: 15c49825fa8070669857bfbfa9fd9d2823cbf082
5
5
  SHA512:
6
- metadata.gz: a628c8aa5c49fdea190b112136ab3ad22861725437b7c167c2ac6188ae7970a5641a6d794243726d4b9c24c0986ad33900d22816a4576fa056e5acc50c328db8
7
- data.tar.gz: 1a92b8176ca835e95923c936ae5c86b77c60e9ba702c7f6dd0d84d082c1ae6aa6eb63a670681bbfb34bb54ada67391c2ab394f4d6182f631712bf57b5376e83f
6
+ metadata.gz: c88b7a12660eb03b7baa4b9e9c43c9029e92bba89c6fc062300b03fab96e2952d78b395280ec8c059256ae22aea3cf928ac02bcc68ce94f515639cc51f03cb27
7
+ data.tar.gz: 4c96921d1016701f69077824a3bb5ac928a7abd48179f4a8860976b8cdcbc5a6342a496f5c43e05aa4a7c0a3c33ef4d59e4ec243be3e9635b95d5692adb09c9b
@@ -14,7 +14,7 @@ module Qti
14
14
  end
15
15
 
16
16
  def shuffled?
17
- @node.at_xpath('.//xmlns:render_choice/@shuffle')&.value == 'Yes'
17
+ @node.at_xpath('.//xmlns:render_choice/@shuffle')&.value.try(:downcase) == 'yes'
18
18
  end
19
19
 
20
20
  def scoring_data_structs
@@ -16,10 +16,6 @@ module Qti
16
16
  @node = node
17
17
  end
18
18
 
19
- def shuffled?
20
- node.at_xpath('.//xmlns:render_choice/@shuffle')&.value == 'Yes'
21
- end
22
-
23
19
  def answers
24
20
  @answers ||= answer_nodes.map do |node|
25
21
  V1::Models::Choices::LogicalIdentifierChoice.new(node)
@@ -14,7 +14,7 @@ module Qti
14
14
  end
15
15
 
16
16
  def shuffled?
17
- @node.at_xpath('.//render_choice/@shuffle')&.value == 'Yes'
17
+ @node.attributes['shuffle']&.value.try(:downcase) == 'true'
18
18
  end
19
19
 
20
20
  def scoring_data_structs
@@ -3,10 +3,9 @@ module Qti
3
3
  module Models
4
4
  module Interactions
5
5
  class ExtendedTextInteraction < BaseInteraction
6
- @node_name = 'extendedTextInteraction'.freeze
7
6
  # This will know if a class matches
8
7
  def self.matches(node)
9
- matches = node.children.filter(INTERACTION_ELEMENTS_CSS).select { |n| n.name == @node_name }
8
+ matches = node.xpath('.//xmlns:extendedTextInteraction')
10
9
  return false if matches.empty?
11
10
 
12
11
  raise Qti::UnsupportedSchema if matches.size > 1
@@ -19,7 +19,7 @@
19
19
  <p>
20
20
  <img src="images/sign.png" alt="NEVER LEAVE LUGGAGE UNATTENDED"/>
21
21
  </p>
22
- <choiceInteraction responseIdentifier="RESPONSE" shuffle="false" maxChoices="1">
22
+ <choiceInteraction responseIdentifier="RESPONSE" shuffle="TRUE" maxChoices="1">
23
23
  <prompt>What does it say?</prompt>
24
24
  <simpleChoice identifier="ChoiceA">You must stay with your luggage at all times.</simpleChoice>
25
25
  <simpleChoice identifier="ChoiceB">Do not let someone else look after your luggage.</simpleChoice>
@@ -1,330 +1,27 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
- <assessmentItem toolVersion="0.5.1" toolName="Mathqurate" title="Adaptive - choice of input type"
3
- timeDependent="false" identifier="Example05-feedbackBlock-adaptive" adaptive="true"
4
- xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p2 http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_v2p2.xsd"
5
- xmlns="http://www.imsglobal.org/xsd/imsqti_v2p2" xmlns:xi="http://www.w3.org/2001/XInclude"
6
- xmlns:m="http://www.w3.org/1998/Math/MathML"
7
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
8
- <responseDeclaration identifier="RESPONSE1" cardinality="single" baseType="identifier"/>
9
- <responseDeclaration identifier="RESPONSE21" cardinality="single" baseType="identifier">
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_v2p2"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+ xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p2 http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_v2p2.xsd"
5
+ identifier="textEntry" title="Richard III (Take 3)" adaptive="false" timeDependent="false">
6
+ <responseDeclaration identifier="RESPONSE" cardinality="single" baseType="string">
10
7
  <correctResponse>
11
- <value>OPTION210</value>
8
+ <value>York</value>
12
9
  </correctResponse>
10
+ <mapping defaultValue="0">
11
+ <mapEntry mapKey="York" mappedValue="1"/>
12
+ <mapEntry mapKey="york" mappedValue="0.5"/>
13
+ </mapping>
13
14
  </responseDeclaration>
14
- <responseDeclaration identifier="RESPONSE22" cardinality="single" baseType="identifier">
15
- <correctResponse>
16
- <value>OPTION221</value>
17
- </correctResponse>
18
- </responseDeclaration>
19
- <responseDeclaration identifier="RESPONSE23" cardinality="single" baseType="identifier">
20
- <correctResponse>
21
- <value>OPTION231</value>
22
- </correctResponse>
23
- </responseDeclaration>
24
- <responseDeclaration identifier="RESPONSE24" cardinality="single" baseType="identifier">
25
- <correctResponse>
26
- <value>OPTION241</value>
27
- </correctResponse>
28
- </responseDeclaration>
29
- <responseDeclaration identifier="RESPONSE25" cardinality="single" baseType="string">
30
- <correctResponse>
31
- <value>cooks</value>
32
- </correctResponse>
33
- </responseDeclaration>
34
- <responseDeclaration identifier="RESPONSE26" cardinality="single" baseType="string">
35
- <correctResponse>
36
- <value>spoil</value>
37
- </correctResponse>
38
- </responseDeclaration>
39
- <responseDeclaration identifier="RESPONSE27" cardinality="single" baseType="string">
40
- <correctResponse>
41
- <value>broth</value>
42
- </correctResponse>
43
- </responseDeclaration>
44
- <outcomeDeclaration baseType="float" cardinality="single" identifier="SCORE"
45
- normalMaximum="10.0" normalMinimum="0.0">
46
- <defaultValue>
47
- <value>0.0</value>
48
- </defaultValue>
49
- </outcomeDeclaration>
50
- <outcomeDeclaration baseType="identifier" cardinality="single" identifier="FEEDBACK"/>
51
- <outcomeDeclaration baseType="identifier" cardinality="multiple" identifier="BODY">
52
- <defaultValue>
53
- <value>part1</value>
54
- </defaultValue>
55
- </outcomeDeclaration>
56
- <itemBody class="">
57
- <div class="">
58
- <feedbackBlock id="feedbackBlock0" identifier="part1" outcomeIdentifier="BODY" showHide="show">
59
- <p>This is the first part of this question: Which of these input methods do you wish to use?</p>
60
- <choiceInteraction id="choiceInteraction0" maxChoices="1" responseIdentifier="RESPONSE1" shuffle="true">
61
- <simpleChoice id="simpleChoice0" identifier="OPTION1">Multiple choice </simpleChoice>
62
- <simpleChoice id="simpleChoice1" identifier="OPTION2">Drop-down menu </simpleChoice>
63
- <simpleChoice id="simpleChoice2" identifier="OPTION3">Typed input </simpleChoice>
64
- </choiceInteraction>
65
- </feedbackBlock>
66
- <feedbackBlock identifier="part2" outcomeIdentifier="BODY" showHide="show">
67
- <p>OK, this is the type of input you have chosen. Now please answer this, the second part of the question.</p>
68
- </feedbackBlock>
69
- <feedbackBlock identifier="option1" outcomeIdentifier="BODY" showHide="show">
70
- <p class="">Choose the correct saying:</p>
71
- <choiceInteraction maxChoices="1" responseIdentifier="RESPONSE21" shuffle="true">
72
- <simpleChoice identifier="OPTION210">Too many cooks spoil the broth</simpleChoice>
73
- <simpleChoice identifier="OPTION211">Too many cooks burn the dinner</simpleChoice>
74
- <simpleChoice identifier="OPTION212">Too many children spill the broth</simpleChoice>
75
- <simpleChoice identifier="OPTION213">Too many hands spill the beans</simpleChoice>
76
- <simpleChoice identifier="OPTION214">Too many children spoil the broth</simpleChoice>
77
- </choiceInteraction>
78
- </feedbackBlock>
79
- <feedbackBlock identifier="option2" outcomeIdentifier="BODY" showHide="show">
80
- <p class="">Complete the saying below by selecting from the lists:</p>
81
- <p class="">Too many&#160;
82
- <inlineChoiceInteraction responseIdentifier="RESPONSE22" shuffle="true">
83
- <inlineChoice identifier="OPTION221">cooks</inlineChoice>
84
- <inlineChoice identifier="OPTION222">children</inlineChoice>
85
- <inlineChoice identifier="OPTION223">hands</inlineChoice>
86
- </inlineChoiceInteraction>&#160;
87
- <inlineChoiceInteraction responseIdentifier="RESPONSE23" shuffle="true">
88
- <inlineChoice identifier="OPTION231">spoil</inlineChoice>
89
- <inlineChoice identifier="OPTION232">spill</inlineChoice>
90
- <inlineChoice identifier="OPTION233">burn</inlineChoice>
91
- </inlineChoiceInteraction> the&#160;
92
- <inlineChoiceInteraction responseIdentifier="RESPONSE24" shuffle="true">
93
- <inlineChoice identifier="OPTION241">broth</inlineChoice>
94
- <inlineChoice identifier="OPTION242">dinner</inlineChoice>
95
- <inlineChoice identifier="OPTION243">beans</inlineChoice>
96
- </inlineChoiceInteraction>.
97
- </p>
98
- </feedbackBlock>
99
- <feedbackBlock identifier="option3" outcomeIdentifier="BODY" showHide="show">
100
- <p class="">Complete the saying below:</p>
101
- <p class="">Too many&#160;
102
- <textEntryInteraction expectedLength="20" responseIdentifier="RESPONSE25"/>&#160;
103
- <textEntryInteraction expectedLength="20" responseIdentifier="RESPONSE26"/> the&#160;
104
- <textEntryInteraction expectedLength="20" responseIdentifier="RESPONSE27"/>.
105
- </p>
106
- </feedbackBlock>
107
- <div class="">
108
- <feedbackInline id="feedbackInline1" identifier="CORRECT" outcomeIdentifier="FEEDBACK"
109
- showHide="show"> That's the correct answer. </feedbackInline>
110
- <feedbackInline id="feedbackInline2" identifier="PARTIAL" outcomeIdentifier="FEEDBACK"
111
- showHide="show"> Your answer is partially correct; the correct answer is "Too many <b>cooks</b> <b>spoil</b> the <b>broth</b>". </feedbackInline>
112
- <feedbackInline id="feedbackInline3" identifier="INCORRECT" outcomeIdentifier="FEEDBACK"
113
- showHide="show"> Sorry, that's not correct; the correct answer is "Too many <b>cooks</b> <b>spoil</b> the <b>broth</b>". </feedbackInline>
114
- </div>
115
- </div>
15
+ <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="float"/>
16
+ <itemBody>
17
+ <p>Identify the missing word in this famous quote from Shakespeare's Richard III.</p>
18
+ <blockquote>
19
+ <p>Now is the winter of our discontent<br/> Made glorious summer by this sun of
20
+ <textEntryInteraction responseIdentifier="RESPONSE" expectedLength="15"/>;<br/>
21
+ And all the clouds that lour'd upon our house<br/> In the deep bosom of the ocean
22
+ buried.</p>
23
+ </blockquote>
116
24
  </itemBody>
117
- <responseProcessing>
118
- <responseCondition>
119
- <responseIf>
120
- <member>
121
- <baseValue baseType="identifier">part1</baseValue>
122
- <variable identifier="BODY"/>
123
- </member>
124
- <setOutcomeValue identifier="BODY">
125
- <multiple>
126
- <baseValue baseType="identifier">part2</baseValue>
127
- </multiple>
128
- </setOutcomeValue>
129
- <responseCondition>
130
- <responseIf>
131
- <match>
132
- <variable identifier="RESPONSE1"/>
133
- <baseValue baseType="identifier">OPTION1</baseValue>
134
- </match>
135
- <setOutcomeValue identifier="BODY">
136
- <multiple>
137
- <variable identifier="BODY"/>
138
- <baseValue baseType="identifier">option1</baseValue>
139
- </multiple>
140
- </setOutcomeValue>
141
- </responseIf>
142
- <responseElseIf>
143
- <match>
144
- <variable identifier="RESPONSE1"/>
145
- <baseValue baseType="identifier">OPTION2</baseValue>
146
- </match>
147
- <setOutcomeValue identifier="BODY">
148
- <multiple>
149
- <variable identifier="BODY"/>
150
- <baseValue baseType="identifier">option2</baseValue>
151
- </multiple>
152
- </setOutcomeValue>
153
- </responseElseIf>
154
- <responseElseIf>
155
- <match>
156
- <variable identifier="RESPONSE1"/>
157
- <baseValue baseType="identifier">OPTION3</baseValue>
158
- </match>
159
- <setOutcomeValue identifier="BODY">
160
- <multiple>
161
- <variable identifier="BODY"/>
162
- <baseValue baseType="identifier">option3</baseValue>
163
- </multiple>
164
- </setOutcomeValue>
165
- </responseElseIf>
166
- </responseCondition>
167
- </responseIf>
168
- <responseElseIf>
169
- <member>
170
- <baseValue baseType="identifier">part2</baseValue>
171
- <variable identifier="BODY"/>
172
- </member>
173
- <responseCondition>
174
- <responseIf>
175
- <member>
176
- <baseValue baseType="identifier">option1</baseValue>
177
- <variable identifier="BODY"/>
178
- </member>
179
- <responseCondition>
180
- <responseIf>
181
- <match>
182
- <variable identifier="RESPONSE21"/>
183
- <correct identifier="RESPONSE21"/>
184
- </match>
185
- <setOutcomeValue identifier="FEEDBACK">
186
- <baseValue baseType="identifier">CORRECT</baseValue>
187
- </setOutcomeValue>
188
- <setOutcomeValue identifier="SCORE">
189
- <baseValue baseType="float">10.0</baseValue>
190
- </setOutcomeValue>
191
- </responseIf>
192
- <responseElse>
193
- <setOutcomeValue identifier="FEEDBACK">
194
- <baseValue baseType="identifier">INCORRECT</baseValue>
195
- </setOutcomeValue>
196
- <setOutcomeValue identifier="SCORE">
197
- <baseValue baseType="float">0.0</baseValue>
198
- </setOutcomeValue>
199
- </responseElse>
200
- </responseCondition>
201
- </responseIf>
202
- <responseElseIf>
203
- <member>
204
- <baseValue baseType="identifier">option2</baseValue>
205
- <variable identifier="BODY"/>
206
- </member>
207
- <responseCondition>
208
- <responseIf>
209
- <and>
210
- <match>
211
- <variable identifier="RESPONSE22"/>
212
- <correct identifier="RESPONSE22"/>
213
- </match>
214
- <match>
215
- <variable identifier="RESPONSE23"/>
216
- <correct identifier="RESPONSE23"/>
217
- </match>
218
- <match>
219
- <variable identifier="RESPONSE24"/>
220
- <correct identifier="RESPONSE24"/>
221
- </match>
222
- </and>
223
- <setOutcomeValue identifier="FEEDBACK">
224
- <baseValue baseType="identifier">CORRECT</baseValue>
225
- </setOutcomeValue>
226
- <setOutcomeValue identifier="SCORE">
227
- <baseValue baseType="float">10.0</baseValue>
228
- </setOutcomeValue>
229
- </responseIf>
230
- <responseElseIf>
231
- <or>
232
- <match>
233
- <variable identifier="RESPONSE22"/>
234
- <correct identifier="RESPONSE22"/>
235
- </match>
236
- <match>
237
- <variable identifier="RESPONSE23"/>
238
- <correct identifier="RESPONSE23"/>
239
- </match>
240
- <match>
241
- <variable identifier="RESPONSE24"/>
242
- <correct identifier="RESPONSE24"/>
243
- </match>
244
- </or>
245
- <setOutcomeValue identifier="FEEDBACK">
246
- <baseValue baseType="identifier">PARTIAL</baseValue>
247
- </setOutcomeValue>
248
- <setOutcomeValue identifier="SCORE">
249
- <baseValue baseType="float">5.0</baseValue>
250
- </setOutcomeValue>
251
- </responseElseIf>
252
- <responseElse>
253
- <setOutcomeValue identifier="FEEDBACK">
254
- <baseValue baseType="identifier">INCORRECT</baseValue>
255
- </setOutcomeValue>
256
- <setOutcomeValue identifier="SCORE">
257
- <baseValue baseType="float">0.0</baseValue>
258
- </setOutcomeValue>
259
- </responseElse>
260
- </responseCondition>
261
- </responseElseIf>
262
- <responseElseIf>
263
- <member>
264
- <baseValue baseType="identifier">option3</baseValue>
265
- <variable identifier="BODY"/>
266
- </member>
267
- <responseCondition>
268
- <responseIf>
269
- <and>
270
- <match>
271
- <variable identifier="RESPONSE25"/>
272
- <correct identifier="RESPONSE25"/>
273
- </match>
274
- <match>
275
- <variable identifier="RESPONSE26"/>
276
- <correct identifier="RESPONSE26"/>
277
- </match>
278
- <match>
279
- <variable identifier="RESPONSE27"/>
280
- <correct identifier="RESPONSE27"/>
281
- </match>
282
- </and>
283
- <setOutcomeValue identifier="FEEDBACK">
284
- <baseValue baseType="identifier">CORRECT</baseValue>
285
- </setOutcomeValue>
286
- <setOutcomeValue identifier="SCORE">
287
- <baseValue baseType="float">10.0</baseValue>
288
- </setOutcomeValue>
289
- </responseIf>
290
- <responseElseIf>
291
- <or>
292
- <match>
293
- <variable identifier="RESPONSE25"/>
294
- <correct identifier="RESPONSE25"/>
295
- </match>
296
- <match>
297
- <variable identifier="RESPONSE26"/>
298
- <correct identifier="RESPONSE26"/>
299
- </match>
300
- <match>
301
- <variable identifier="RESPONSE27"/>
302
- <correct identifier="RESPONSE27"/>
303
- </match>
304
- </or>
305
- <setOutcomeValue identifier="FEEDBACK">
306
- <baseValue baseType="identifier">PARTIAL</baseValue>
307
- </setOutcomeValue>
308
- <setOutcomeValue identifier="SCORE">
309
- <baseValue baseType="float">5.0</baseValue>
310
- </setOutcomeValue>
311
- </responseElseIf>
312
- <responseElse>
313
- <setOutcomeValue identifier="FEEDBACK">
314
- <baseValue baseType="identifier">INCORRECT</baseValue>
315
- </setOutcomeValue>
316
- <setOutcomeValue identifier="SCORE">
317
- <baseValue baseType="float">0.0</baseValue>
318
- </setOutcomeValue>
319
- </responseElse>
320
- </responseCondition>
321
- </responseElseIf>
322
- </responseCondition>
323
- <!-- completionStatus must be specifically set to completed in adaptive questions -->
324
- <setOutcomeValue identifier="completionStatus">
325
- <baseValue baseType="identifier">completed</baseValue>
326
- </setOutcomeValue>
327
- </responseElseIf>
328
- </responseCondition>
329
- </responseProcessing>
25
+ <responseProcessing
26
+ template="http://www.imsglobal.org/question/qti_v2p2/rptemplates/map_response"/>
330
27
  </assessmentItem>
@@ -1,20 +1,48 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Qti::V1::Models::Interactions::ChoiceInteraction do
4
- context 'quiz.xml' do
5
- let(:fixtures_path) { File.join('spec', 'fixtures') }
6
- let(:file_path) { File.join(fixtures_path, 'test_qti_1.2', 'quiz.xml') }
7
- let(:test_object) { Qti::V1::Models::Assessment.from_path!(file_path) }
8
- let(:assessment_item_refs) { test_object.assessment_items }
9
- let(:loaded_class) { described_class.new(assessment_item_refs.first) }
4
+ let(:fixtures_path) { File.join('spec', 'fixtures', 'items_1.2') }
5
+ let(:test_object) { Qti::V1::Models::Assessment.from_path!(file_path) }
6
+ let(:assessment_item_refs) { test_object.assessment_items }
7
+ let(:loaded_class) { described_class.new(assessment_item_refs.first) }
10
8
 
9
+ shared_examples_for 'shuffled?' do
11
10
  it 'returns shuffle setting' do
12
- expect(loaded_class.shuffled?).to eq true
11
+ expect(loaded_class.shuffled?).to eq shuffle_value
13
12
  end
13
+ end
14
14
 
15
+ shared_examples_for 'answers' do
15
16
  it 'returns the answers' do
16
- expect(loaded_class.answers.count).to eq 2
17
+ expect(loaded_class.answers.count).to eq answer_count
17
18
  expect(loaded_class.answers.first).to be_an_instance_of(Qti::V1::Models::Choices::LogicalIdentifierChoice)
18
19
  end
19
20
  end
21
+
22
+ context 'multiple_choice.xml' do
23
+ let(:file_path) { File.join(fixtures_path, 'multiple_choice.xml') }
24
+ let(:shuffle_value) { false }
25
+ let(:answer_count) { 5 }
26
+
27
+ include_examples 'shuffled?'
28
+ include_examples 'answers'
29
+ end
30
+
31
+ context 'true_false.xml' do
32
+ let(:file_path) { File.join(fixtures_path, 'true_false.xml') }
33
+ let(:shuffle_value) { true }
34
+ let(:answer_count) { 2 }
35
+
36
+ include_examples 'shuffled?'
37
+ include_examples 'answers'
38
+ end
39
+
40
+ context 'true_false.xml' do
41
+ let(:file_path) { File.join(fixtures_path, 'multiple_answer.xml') }
42
+ let(:shuffle_value) { false }
43
+ let(:answer_count) { 7 }
44
+
45
+ include_examples 'shuffled?'
46
+ include_examples 'answers'
47
+ end
20
48
  end
@@ -8,7 +8,7 @@ describe Qti::V2::Models::Interactions::ChoiceInteraction do
8
8
  let(:loaded_class) { described_class.new(node) }
9
9
 
10
10
  it 'returns shuffle setting' do
11
- expect(loaded_class.shuffled?).to eq false
11
+ expect(loaded_class.shuffled?).to eq true
12
12
  end
13
13
 
14
14
  it 'returns the max choices count' do
@@ -7,6 +7,10 @@ describe Qti::V2::Models::Interactions::ExtendedTextInteraction do
7
7
 
8
8
  let(:loaded_class) { described_class.new(node) }
9
9
 
10
+ it 'returns shuffle setting' do
11
+ expect(loaded_class.shuffled?).to eq false
12
+ end
13
+
10
14
  it 'returns the expected lines' do
11
15
  expect(loaded_class.expected_lines).to eq 0
12
16
  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.2.14
4
+ version: 0.2.15
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-04-14 00:00:00.000000000 Z
12
+ date: 2017-04-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport