engrade 1.0.1 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -21,15 +21,18 @@ Engrade.login('username', 'password')
21
21
  # Grabbing classes
22
22
 
23
23
  classes = Engrade.classes
24
- classes = Engrade.classes("Sem1")
24
+ classes = Engrade.classes(:only => "Sem1")
25
+ classes = Engrade.classes(:except => "Biology")
25
26
 
26
27
  # Getting assignments from classes
27
28
 
28
29
  assignments = Engrade.assignments(classes)
30
+ assignments = Engrade.assignments(classes, :only => "Final")
31
+ assignments = Engrade.assignments(classes, :except => "Quiz")
29
32
 
30
33
  # Deleting assignments
31
34
 
32
- Engrade.delete(assignments)
35
+ Engrade.delete!(assignments)
33
36
 
34
37
  # Posting directly to Engrade
35
38
  # (make sure to set apikey and login first)
data/lib/engrade.rb CHANGED
@@ -73,35 +73,30 @@ module Engrade
73
73
 
74
74
 
75
75
  # .classes returns an array of Classroom objects(data structure to represent
76
- # classes). if called with a regexp, it will only return the classes whose
77
- # name matches that regexp. if called with no argument, it will return all
78
- # classes.
79
- def self.classes(regexp=nil)
80
- classes = teacher_classes
81
- classes.select! { |cl| cl['name'].match regexp } if regexp
82
- classes.map { |cl| Classroom.new(cl) }
76
+ # classes). when no argument is given, all classes are returned. the classes
77
+ # can be filtered by calling with the :only or :except option.
78
+ def self.classes(options={})
79
+ filter teacher_classes, options
83
80
  end
84
81
 
85
82
 
86
83
  # .assignments returns an array(of Assignment objects) of every assignment
87
84
  # from the input classes. the classes parameter can be the class id, a
88
85
  # Classroom object, an array of class ids, or an array of Classroom objects.
89
- def self.assignments(classes)
90
- assignments = []
91
- clid_array(classes).each do |clid|
92
- (Engrade.gradebook :clid => clid).
93
- map { |assn| assignments << Assignment.new(assn) }
94
- end
95
- assignments
86
+ # assignments can be filtered by calling with the additional :only or :except
87
+ # option.
88
+ def self.assignments(classes, options={})
89
+ filter all_assignments(classes), options
96
90
  end
97
91
 
98
92
 
99
- # .delete takes in an array of Assignment object, or a single Assignment
93
+
94
+ # .delete! takes in an array of Assignment object, or a single Assignment
100
95
  # object and deletes those assignments from the Engrade webpage. it also
101
96
  # removes the comments from those assignments before deleting, because of
102
97
  # a bug in the Engrade system where comments from deleted assignments
103
98
  # reappear when assignment ids are recycled.
104
- def self.delete(assignments)
99
+ def self.delete!(assignments)
105
100
  assignments = array(assignments)
106
101
  assignments.each do |assn|
107
102
  @browser.remove_comments assn.clid, assn.assnid
@@ -113,8 +108,26 @@ module Engrade
113
108
  # HELPER METHODS #
114
109
  ##################
115
110
 
111
+ def self.filter(array=[], options={})
112
+ var = :name if array.first.instance_of? Classroom
113
+ var = :title if array.first.instance_of? Assignment
114
+ array.select! { |item| item.send(var).match options[:only]} if options[:only]
115
+ array.reject! { |item| item.send(var).match options[:except]} if options[:except]
116
+ array
117
+ end
118
+
119
+ def self.all_assignments(classes)
120
+ assignments = []
121
+ clid_array(classes).each do |clid|
122
+ (Engrade.gradebook :clid => clid).
123
+ map { |assn| assignments << Assignment.new(assn) }
124
+ end
125
+ assignments
126
+ end
127
+
116
128
  def self.teacher_classes(query={})
117
- JSON(post :apitask => 'teacher-classes')['classes']
129
+ class_hash = JSON(post :apitask => 'teacher-classes')['classes']
130
+ class_hash.map { |cl| Classroom.new(cl) }
118
131
  end
119
132
 
120
133
 
@@ -1,3 +1,3 @@
1
1
  module Engrade
2
- VERSION = "1.0.1"
2
+ VERSION = "1.1.1"
3
3
  end
data/spec/engrade_spec.rb CHANGED
@@ -10,350 +10,300 @@ describe Engrade do
10
10
  Engrade.base_uri.should eql 'https://api.engrade.com/api/'
11
11
  end
12
12
 
13
- describe "public method" do
14
13
 
15
- describe ".default_params" do
16
-
17
- it "should be a Hash" do
18
- Engrade.default_params.should be_an_instance_of Hash
19
- end
20
-
21
- it "should have :api set to json" do
22
- Engrade.default_params[:api].should eql 'json'
23
- end
14
+ describe ".default_params" do
15
+
16
+ it "should be a Hash" do
17
+ Engrade.default_params.should be_an_instance_of Hash
18
+ end
24
19
 
20
+ it "should have :api set to json" do
21
+ Engrade.default_params[:api].should eql 'json'
25
22
  end
26
23
 
27
- describe ".set_apikey" do
24
+ end
28
25
 
29
- it "should set :apikey in default_params" do
30
- Engrade.set_apikey 'test'
31
- Engrade.default_params[:apikey].should eql 'test'
32
- end
26
+ describe ".set_apikey" do
33
27
 
28
+ it "should set :apikey in default_params" do
29
+ Engrade.set_apikey 'test'
30
+ Engrade.default_params[:apikey].should eql 'test'
34
31
  end
35
32
 
36
- describe ".set_ses" do
33
+ end
37
34
 
38
- it "should set :ses in default_params" do
39
- Engrade.set_ses 'test'
40
- Engrade.default_params[:ses].should eql 'test'
41
- end
35
+ describe ".set_ses" do
42
36
 
37
+ it "should set :ses in default_params" do
38
+ Engrade.set_ses 'test'
39
+ Engrade.default_params[:ses].should eql 'test'
43
40
  end
44
41
 
45
- describe ".reset!" do
42
+ end
46
43
 
47
- it "should reset default_params to original value" do
48
- orig = Engrade.default_params.dup
49
- Engrade.set_apikey "12345"
50
- Engrade.reset!
51
- Engrade.default_params.should eql orig
52
- end
44
+ describe ".reset!" do
53
45
 
46
+ it "should reset default_params to original value" do
47
+ orig = Engrade.default_params.dup
48
+ Engrade.set_apikey "12345"
49
+ Engrade.reset!
50
+ Engrade.default_params.should eql orig
54
51
  end
55
52
 
56
- describe ".post" do
53
+ end
57
54
 
58
- before :each do
59
- Engrade.set_apikey ENV['ENG_API']
60
- end
55
+ describe ".post" do
61
56
 
62
- it "should call RestClient.post with query and default_params" do
63
- response = build :login
64
- RestClient.should_receive(:post).with(Engrade.base_uri, response[:payload]).
65
- and_return response[:body]
66
- Engrade.post response[:query]
67
- end
57
+ before :each do
58
+ Engrade.set_apikey ENV['ENG_API']
59
+ end
68
60
 
69
- context "with valid call" do
61
+ it "should call RestClient.post with query and default_params" do
62
+ response = build :login
63
+ RestClient.should_receive(:post).with(Engrade.base_uri, response[:payload]).
64
+ and_return response[:body]
65
+ Engrade.post response[:query]
66
+ end
70
67
 
71
- it "should return the result of RestClient.post" do
72
- response = build :login
73
- RestClient.stub(:post).and_return response[:body]
74
- Engrade.post(response[:query]).should eql response[:body]
75
- end
68
+ context "with valid call" do
76
69
 
70
+ it "should return the result of RestClient.post" do
71
+ response = build :login
72
+ RestClient.stub(:post).and_return response[:body]
73
+ Engrade.post(response[:query]).should eql response[:body]
77
74
  end
78
75
 
79
- context "when not logged in" do
76
+ end
80
77
 
81
- it "should raise an InvalidSession error" do
82
- RestClient.stub(:post).and_return build(:bad_ses)[:body]
83
- expect { Engrade.post :apitask => 'teacher-classes' }.
84
- to raise_error Engrade::InvalidSession
85
- end
78
+ context "when not logged in" do
86
79
 
80
+ it "should raise an InvalidSession error" do
81
+ RestClient.stub(:post).and_return build(:bad_ses)[:body]
82
+ expect { Engrade.post :apitask => 'teacher-classes' }.
83
+ to raise_error Engrade::InvalidSession
87
84
  end
88
85
 
89
- context "with bad apikey" do
86
+ end
90
87
 
91
- it "should raise an InvalidKey error" do
92
- Engrade.set_apikey 'badapi'
93
- RestClient.stub(:post).and_return build(:bad_api)[:body]
94
- expect { Engrade.post }.to raise_error Engrade::InvalidKey
95
- end
88
+ context "with bad apikey" do
96
89
 
90
+ it "should raise an InvalidKey error" do
91
+ Engrade.set_apikey 'badapi'
92
+ RestClient.stub(:post).and_return build(:bad_api)[:body]
93
+ expect { Engrade.post }.to raise_error Engrade::InvalidKey
97
94
  end
98
95
 
99
- context "with no apitask specified" do
100
-
101
- it "should raise a MissingTask error" do
102
- RestClient.stub(:post).and_return build(:no_task)[:body]
103
- expect { Engrade.post }.to raise_error Engrade::MissingTask
104
- end
105
-
106
- end
96
+ end
107
97
 
108
- context "with invalid apitask specified" do
98
+ context "with no apitask specified" do
109
99
 
110
- it "should raise an InvalidTask error" do
111
- RestClient.stub(:post).and_return build(:bad_task)[:body]
112
- expect { Engrade.post :apitask => 'badtask' }.
113
- to raise_error Engrade::InvalidTask
114
- end
115
-
100
+ it "should raise a MissingTask error" do
101
+ RestClient.stub(:post).and_return build(:no_task)[:body]
102
+ expect { Engrade.post }.to raise_error Engrade::MissingTask
116
103
  end
117
104
 
118
105
  end
119
106
 
120
- describe ".login" do
107
+ context "with invalid apitask specified" do
121
108
 
122
- before :each do
123
- Engrade.browser.stub :login
109
+ it "should raise an InvalidTask error" do
110
+ RestClient.stub(:post).and_return build(:bad_task)[:body]
111
+ expect { Engrade.post :apitask => 'badtask' }.
112
+ to raise_error Engrade::InvalidTask
124
113
  end
114
+
115
+ end
125
116
 
126
- it "should call .post with query Hash" do
127
- response = build :login
128
- Engrade.should_receive(:post).with(response[:query]).
129
- and_return response[:body]
130
- Engrade.login ENV['ENG_USER'], ENV['ENG_PASS']
131
- end
117
+ end
132
118
 
133
- context "with valid credentials" do
119
+ describe ".login" do
134
120
 
135
- before :each do
136
- @response = build(:login)
137
- Engrade.stub(:post).and_return @response[:body]
138
- end
121
+ before :each do
122
+ Engrade.browser.stub :login
123
+ end
139
124
 
140
- it "should return the session id" do
141
- Engrade.login(ENV['ENG_USER'], ENV['ENG_PASS']).
142
- should eql @response[:json]['values']['ses']
143
- end
125
+ it "should call .post with query Hash" do
126
+ response = build :login
127
+ Engrade.should_receive(:post).with(response[:query]).
128
+ and_return response[:body]
129
+ Engrade.login ENV['ENG_USER'], ENV['ENG_PASS']
130
+ end
144
131
 
145
- it "should set :ses in the default params" do
146
- ses = Engrade.login ENV['ENG_USER'], ENV['ENG_PASS']
147
- Engrade.default_params[:ses].should eql ses
148
- end
132
+ context "with valid credentials" do
149
133
 
134
+ before :each do
135
+ @response = build(:login)
136
+ Engrade.stub(:post).and_return @response[:body]
150
137
  end
151
138
 
152
- context "with invalid username" do
153
-
154
- it "should raise InvalidLogin error" do
155
- Engrade.stub(:post).and_return build(:login_baduser)[:body]
156
- expect { Engrade.login 'baduser', 'anypass' }.to raise_error Engrade::InvalidLogin
157
- end
158
-
139
+ it "should return the session id" do
140
+ Engrade.login(ENV['ENG_USER'], ENV['ENG_PASS']).
141
+ should eql @response[:json]['values']['ses']
159
142
  end
160
143
 
161
- context "with invalid password" do
162
-
163
- it "should raise InvalidLogin error" do
164
- Engrade.stub(:post).and_return build(:login_badpass)[:body]
165
- expect { Engrade.login ENV['ENG_USER'], 'badpass' }.to raise_error Engrade::InvalidLogin
166
- end
167
-
144
+ it "should set :ses in the default params" do
145
+ ses = Engrade.login ENV['ENG_USER'], ENV['ENG_PASS']
146
+ Engrade.default_params[:ses].should eql ses
168
147
  end
169
148
 
170
149
  end
171
150
 
172
- describe ".classes" do
151
+ context "with invalid username" do
173
152
 
174
- before :each do
175
- @classes = build(:teacher_classes)[:classes]
176
- Engrade.stub(:teacher_classes).and_return @classes
153
+ it "should raise InvalidLogin error" do
154
+ Engrade.stub(:post).and_return build(:login_baduser)[:body]
155
+ expect { Engrade.login 'baduser', 'anypass' }.to raise_error Engrade::InvalidLogin
177
156
  end
178
157
 
158
+ end
179
159
 
180
- it "should call .teacher_classes with the proper query" do
181
- Engrade.should_receive(:teacher_classes).with(no_args).
182
- and_return @classes
183
- Engrade.classes
160
+ context "with invalid password" do
161
+
162
+ it "should raise InvalidLogin error" do
163
+ Engrade.stub(:post).and_return build(:login_badpass)[:body]
164
+ expect { Engrade.login ENV['ENG_USER'], 'badpass' }.to raise_error Engrade::InvalidLogin
184
165
  end
185
166
 
167
+ end
186
168
 
187
- describe "return value" do
188
-
189
- it "should be an Array" do
190
- Engrade.classes.should be_an_instance_of Array
191
- end
192
-
193
- it "should contain Classroom objects" do
194
- Engrade.classes.first.should be_an_instance_of Engrade::Classroom
195
- end
196
-
197
- it "should be filtered when given a string argument" do
198
- Engrade.classes.size.should be > Engrade.classes("Sem1").size
199
- end
200
-
201
- it "should contain classes that match the string argument" do
202
- Engrade.classes("Sem1").first.name.should match "Sem1"
203
- end
169
+ end
204
170
 
205
- end
171
+ describe ".classes" do
206
172
 
173
+ before :each do
174
+ Engrade.stub(:post).and_return build(:teacher_classes)[:body]
207
175
  end
208
176
 
209
- describe ".assignments" do
177
+ describe "return value" do
210
178
 
211
- before :each do
212
- @response = build :gradebook
213
- Engrade.stub(:gradebook).and_return @response[:assignments]
179
+ it "should be an Array" do
180
+ Engrade.classes.should be_an_instance_of Array
214
181
  end
215
182
 
216
- it "should take a class id as input" do
217
- expect { Engrade.assignments((build :classroom).clid) }.to_not raise_error
183
+ it "should contain Classroom objects" do
184
+ Engrade.classes.first.should be_an_instance_of Engrade::Classroom
218
185
  end
219
186
 
220
- it "should take a classroom object as input" do
221
- expect { Engrade.assignments(build :classroom) }.to_not raise_error
187
+ it "should only include classes that match the :only parameter" do
188
+ Engrade.classes(:only => "Sem1").each do |cl|
189
+ cl.name.should match "Sem1"
190
+ end
222
191
  end
223
192
 
224
- it "should take an array of classroom objects as input" do
225
- expect { Engrade.assignments [build(:classroom), build(:classroom)] }.
226
- to_not raise_error
193
+ it "should not include classes that match the :except paramter" do
194
+ Engrade.classes(:except => "Sem1").each do |cl|
195
+ cl.name.should_not match "Sem1"
196
+ end
227
197
  end
228
198
 
229
- it "should take an array of clids as input" do
230
- expect { Engrade.assignments [(build :classroom).clid, (build :classroom).clid] }.
231
- to_not raise_error
232
- end
199
+ end
233
200
 
234
- it "should call .gradebook for each class from input array" do
235
- classes = [build(:classroom), build(:classroom)]
236
- Engrade.should_receive(:gradebook).exactly(2).times
237
- Engrade.assignments classes
238
- end
201
+ end
239
202
 
203
+ describe ".assignments" do
240
204
 
241
- it "should call .gradebook with the appropriate query" do
242
- Engrade.should_receive(:gradebook).with @response[:public_query]
243
- Engrade.assignments build(:classroom)
244
- end
205
+ before :each do
206
+ @response = build :gradebook
207
+ Engrade.stub(:gradebook).and_return @response[:assignments]
208
+ end
245
209
 
210
+ it "should take a class id as input" do
211
+ expect { Engrade.assignments((build :classroom).clid) }.to_not raise_error
212
+ end
246
213
 
247
- describe "return value" do
214
+ it "should take a classroom object as input" do
215
+ expect { Engrade.assignments(build :classroom) }.to_not raise_error
216
+ end
248
217
 
249
- it "should be an Array" do
250
- Engrade.assignments(build :classroom).should be_an_instance_of Array
251
- end
218
+ it "should take an array of classroom objects as input" do
219
+ expect { Engrade.assignments [build(:classroom), build(:classroom)] }.
220
+ to_not raise_error
221
+ end
252
222
 
253
- it "should contain Assignment objects" do
254
- Engrade.assignments(build :classroom).first.
255
- should be_an_instance_of Engrade::Assignment
256
- end
223
+ it "should take an array of clids as input" do
224
+ expect { Engrade.assignments [(build :classroom).clid, (build :classroom).clid] }.
225
+ to_not raise_error
226
+ end
257
227
 
258
- it "should contain assigments from all input classes" do
259
- Engrade.assignments(build :classroom).size.should be < Engrade.assignments([build(:classroom), build(:classroom)]).size
260
- end
228
+ it "should call .gradebook for each class from input array" do
229
+ classes = [build(:classroom), build(:classroom)]
230
+ Engrade.should_receive(:gradebook).exactly(2).times
231
+ Engrade.assignments classes
232
+ end
261
233
 
262
- end
263
234
 
235
+ it "should call .gradebook with the appropriate query" do
236
+ Engrade.should_receive(:gradebook).with @response[:public_query]
237
+ Engrade.assignments build(:classroom)
264
238
  end
265
239
 
266
- describe ".delete" do
240
+
241
+ describe "return value" do
267
242
 
268
243
  before :each do
269
- Engrade.set_ses ENV['ENG_SES']
270
- Engrade.stub :post
271
- Engrade.browser.stub :remove_comments
244
+ @class = build :classroom
272
245
  end
273
246
 
274
- it "should accept an array of Assignments as input" do
275
- assignments = [build(:assignment), build(:assignment)]
276
- expect { Engrade.delete assignments }.to_not raise_error
247
+ it "should be an Array" do
248
+ Engrade.assignments(@class).should be_an_instance_of Array
277
249
  end
278
250
 
279
- it "should accept a single Assignment as input" do
280
- assignment = build :assignment
281
- expect { Engrade.delete assignment }.to_not raise_error
251
+ it "should contain Assignment objects" do
252
+ Engrade.assignments(@class).first.
253
+ should be_an_instance_of Engrade::Assignment
282
254
  end
283
255
 
284
- it "should remove comments of every assignment" do
285
- assignments = [build(:assignment), build(:assignment)]
286
- Engrade.browser.should_receive(:remove_comments).exactly(2).times
287
- Engrade.delete assignments
256
+ it "should contain assigments from all input classes" do
257
+ Engrade.assignments(@class).size.
258
+ should be < Engrade.assignments([@class, @class]).size
259
+ end
260
+
261
+ it "should only include assignments that match the :only parameter" do
262
+ Engrade.assignments(@class, :only => "Pop Quiz").each do |assn|
263
+ assn.title.should match "Pop Quiz"
264
+ end
288
265
  end
289
266
 
290
- it "should call .post with proper query" do
291
- Engrade.should_receive(:post).with build(:delete)[:query]
292
- Engrade.delete [build(:assignment)]
267
+ it "should not include assignments that match the :except paramter" do
268
+ Engrade.assignments(@class, :except => "Pop Quiz").each do |assn|
269
+ assn.title.should_not match "Pop Quiz"
270
+ end
293
271
  end
294
-
272
+
295
273
  end
296
274
 
297
275
  end
298
276
 
299
- describe "helper method" do
300
-
301
-
302
- describe ".teacher_classes" do
277
+ describe ".delete!" do
303
278
 
304
279
  before :each do
305
- Engrade.set_apikey ENV['ENG_API']
306
280
  Engrade.set_ses ENV['ENG_SES']
307
- @response = build :teacher_classes
308
- Engrade.stub :classes
281
+ Engrade.stub :post
282
+ Engrade.browser.stub :remove_comments
309
283
  end
310
284
 
311
- it "should call .post with the proper query" do
312
- Engrade.should_receive(:post).with(@response[:helper_query]).
313
- and_return @response[:body]
314
- Engrade.teacher_classes
315
- end
316
-
317
- it "should return an array of classes" do
318
- Engrade.stub(:post).and_return @response[:body]
319
- Engrade.teacher_classes.should eql @response[:classes]
320
- end
321
-
285
+ it "should accept an array of Assignments as input" do
286
+ assignments = [build(:assignment), build(:assignment)]
287
+ expect { Engrade.delete! assignments }.to_not raise_error
322
288
  end
323
289
 
324
- describe ".gradebook" do
325
-
326
- before :each do
327
- Engrade.set_apikey ENV['ENG_API']
328
- Engrade.set_ses ENV['ENG_SES']
329
- @response = build :gradebook
330
- Engrade.stub :assignments
331
- end
332
-
333
- it "should call .post with appropriate query" do
334
- Engrade.should_receive(:post).with(@response[:helper_query]).
335
- and_return @response[:body]
336
- Engrade.gradebook :clid => build(:classroom).clid
337
- end
338
-
339
- it "should return an array of assignments" do
340
- Engrade.stub(:post).and_return @response[:body]
341
- Engrade.gradebook(:clid => build(:classroom).clid).
342
- should eql @response[:assignments]
343
- end
344
-
345
- context "with bad class id" do
346
-
347
- it "should raise a InvalidClassId error" do
348
- Engrade.stub(:post).and_return build(:bad_class)[:body]
349
- expect { Engrade.gradebook(:clid => build(:bad_classroom).clid) }.
350
- to raise_error Engrade::InvalidClassId
351
- end
290
+ it "should accept a single Assignment as input" do
291
+ assignment = build :assignment
292
+ expect { Engrade.delete! assignment }.to_not raise_error
293
+ end
352
294
 
353
- end
295
+ it "should remove comments of every assignment" do
296
+ assignments = [build(:assignment), build(:assignment)]
297
+ Engrade.browser.should_receive(:remove_comments).exactly(2).times
298
+ Engrade.delete! assignments
299
+ end
354
300
 
301
+ it "should call .post with proper query" do
302
+ Engrade.should_receive(:post).with build(:delete)[:query]
303
+ Engrade.delete! [build(:assignment)]
355
304
  end
356
-
305
+
306
+
357
307
  end
358
308
 
359
309
  end
@@ -11,7 +11,7 @@ describe Engrade do
11
11
 
12
12
  VCR.use_cassette('assignments') { @assignments = Engrade.assignments @classes }
13
13
 
14
- VCR.use_cassette('delete') { Engrade.delete @assignments }
14
+ VCR.use_cassette('delete') { Engrade.delete! @assignments }
15
15
 
16
16
  VCR.use_cassette('result') { @result = Engrade.assignments @classes }
17
17
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: engrade
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-23 00:00:00.000000000 Z
12
+ date: 2013-03-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
@@ -212,7 +212,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
212
212
  version: '0'
213
213
  segments:
214
214
  - 0
215
- hash: -562363953
215
+ hash: -299844275
216
216
  required_rubygems_version: !ruby/object:Gem::Requirement
217
217
  none: false
218
218
  requirements:
@@ -221,7 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
221
221
  version: '0'
222
222
  segments:
223
223
  - 0
224
- hash: -562363953
224
+ hash: -299844275
225
225
  requirements: []
226
226
  rubyforge_project:
227
227
  rubygems_version: 1.8.25