mork 0.12.0 → 0.13.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -80,7 +80,7 @@ end
80
80
  # @grom.rm_edgy_x.should == 24
81
81
  # end
82
82
  # it 'returns an integer' do
83
- # @grom.rm_edgy_x.should be_a Fixnum
83
+ # @grom.rm_edgy_x.should be_an Integer
84
84
  # end
85
85
  # end
86
86
 
@@ -89,7 +89,7 @@ end
89
89
  # @grom.rm_edgy_y.should == 24
90
90
  # end
91
91
  # it 'returns an integer' do
92
- # @grom.rm_edgy_y.should be_a Fixnum
92
+ # @grom.rm_edgy_y.should be_an Integer
93
93
  # end
94
94
  # end
95
95
 
@@ -98,6 +98,6 @@ end
98
98
  # @grom.rm_max_search_area_side.should == 400
99
99
  # end
100
100
  # it 'returns an integer' do
101
- # @grom.rm_max_search_area_side.should be_a Fixnum
101
+ # @grom.rm_max_search_area_side.should be_an Integer
102
102
  # end
103
103
  # end
@@ -7,10 +7,6 @@ module Mork
7
7
  let(:co) { Coord.new 50}
8
8
  let(:pp) { { tl: {x: 10, y: 10}, tr: {x: 1000, y: 10}, bl: {x: 10, y: 1700}, br: {x: 1000, y: 1700}} }
9
9
 
10
- it 'exists' do
11
- expect(Magicko.new 1).to be_a Magicko
12
- end
13
-
14
10
  describe '#width' do
15
11
  it 'returns the image width' do
16
12
  expect(ma.width).to eq sh.width
@@ -3,140 +3,167 @@ require 'fileutils'
3
3
 
4
4
  module Mork
5
5
  describe SheetOMR do
6
- context 'with a valid response sheet' do
7
- let(:img) { sample_img 'jdoe1' }
8
- let(:fn) { File.basename(img.image_path) }
9
- let(:omr) { SheetOMR.new img.image_path, layout: img.grid_path }
10
- describe '#new' do
11
- it 'creates a SheetOMR object' do
12
- expect(omr).to be_a SheetOMR
13
- end
14
-
15
- it 'raises an error if the provided path is invalid' do
16
- expect { SheetOMR.new 'non_existing_file.jpg'}.to raise_error IOError
6
+ context 'catching source file problems' do
7
+ describe 'trying to process a non existing file' do
8
+ it 'throws a file-not-found error' do
9
+ expect { SheetOMR.new 'non_existing_file.jpg'}.to raise_error Errno::ENOENT, 'No such file or directory'
17
10
  end
18
11
  end
19
12
 
20
- describe '#set_choices' do
21
- it 'returns true if all goes well' do
22
- expect(omr.set_choices([10])).to be_truthy
13
+ describe 'trying to process a corrupted file' do
14
+ it 'throws an IO error' do
15
+ fn = sample_img('corrupted-pdf').image_path
16
+ expect { SheetOMR.new fn}.to raise_error(IOError, 'Invalid image. File may have been damaged')
23
17
  end
24
18
  end
19
+ end
20
+
21
+ context 'using John Doe’s reference sheet' do
22
+ let(:img) { sample_img 'jdoe1' }
23
+ let(:fn) { File.basename(img.image_path) }
24
+ let(:omr) { SheetOMR.new img.image_path, layout: img.grid_path }
25
+
26
+ context 'object creation' do
27
+ describe '#new' do
28
+ it 'creates a SheetOMR object' do
29
+ expect(omr).to be_a SheetOMR
30
+ end
25
31
 
26
- describe '#valid?' do
27
- it 'registers correctly' do
28
- expect(omr.valid?).to be_truthy
32
+ it 'registers the image correctly' do
33
+ expect(omr.valid?).to be_truthy
34
+ end
29
35
  end
30
36
  end
31
37
 
32
- describe '#status' do
33
- it 'returns the registration status for each of the four corners' do
34
- expect(omr.status).to eq({ tl: :ok, tr: :ok, br: :ok, bl: :ok })
38
+ context 'querying and modifying the object' do
39
+ describe '#status' do
40
+ it 'returns the valid (:ok) registration status for each corner' do
41
+ expect(omr.status).to eq({ tl: :ok, tr: :ok, br: :ok, bl: :ok })
42
+ end
35
43
  end
36
- end
37
44
 
38
- describe '#barcode' do
39
- it 'returns the integer form of the barcode' do
40
- expect(omr.barcode).to eq img.barcode_int
45
+ describe '#set_choices' do
46
+ it 'returns true if all goes well' do
47
+ expect(omr.set_choices([10])).to be_truthy
48
+ end
49
+
50
+ it 'raises an Argument error if the choices argument is invalid' do
51
+ expect { omr.set_choices('a string').to raise_error ArgumentError }
52
+ end
41
53
  end
42
54
  end
43
55
 
44
- describe '#barcode_string' do
45
- it 'returns the binary string version of the barcode' do
46
- expect(omr.barcode_string).to eq img.barcode_str
56
+ context 'analyzing the barcode' do
57
+ describe '#barcode' do
58
+ it 'returns the integer form of the barcode' do
59
+ expect(omr.barcode).to eq img.barcode_int
60
+ end
47
61
  end
48
- end
49
62
 
50
- describe '#marked?' do
51
- it 'returns true if the given cell was marked, false otherwise' do
52
- expect(omr.marked? 0, 0).to be_truthy
53
- expect(omr.marked? 0, 1).to be_falsy
54
- expect(omr.marked? 119, 4).to be_truthy
55
- expect(omr.marked? 119, 3).to be_falsy
63
+ describe '#barcode_string' do
64
+ it 'returns the binary string version of the barcode' do
65
+ expect(omr.barcode_string).to eq img.barcode_str
66
+ end
56
67
  end
57
68
  end
58
69
 
59
- describe '#marked_choices' do
60
- it 'returns an array of marked choices as position indexes' do
61
- expect(omr.marked_choices ).to eq standard_mark_array(24)
70
+ context 'analyzing response cells' do
71
+ describe '#marked?' do
72
+ it 'returns true if the given cell was marked, false otherwise' do
73
+ expect(omr.marked? 0, 0).to be_truthy
74
+ expect(omr.marked? 0, 1).to be_falsy
75
+ expect(omr.marked? 119, 4).to be_truthy
76
+ expect(omr.marked? 119, 3).to be_falsy
77
+ end
62
78
  end
63
79
 
64
- let(:om2) { SheetOMR.new img.image_path, layout: img.grid_path }
65
- it 'returns marked choices only for existing choice cells' do
66
- om2.set_choices [5, 4, 3, 2, 1]
67
- expect(om2.marked_choices).to eq [[0], [1], [2], [], []]
68
- end
69
- end
80
+ describe '#marked_choices' do
81
+ it 'returns an array of marked choices as position indexes' do
82
+ expect(omr.marked_choices ).to eq standard_mark_array(24)
83
+ end
70
84
 
71
- describe '#marked_letters' do
72
- it 'returns an array of characters for the marked choices' do
73
- expect(omr.marked_letters).to eq standard_mark_char_array(24)
85
+ it 'returns marked choices only for existing choice cells' do
86
+ omr.set_choices [5, 4, 3, 2, 1]
87
+ expect(omr.marked_choices).to eq [[0], [1], [2], [], []]
88
+ end
74
89
  end
75
- end
76
90
 
77
- it 'writes out markedness' do
78
- mf = File.open('spec/out/text/marked.txt', 'w')
79
- img.nitems.times do |q|
80
- x = 5.times.collect do |c|
81
- omr.marked?(q,c) ? '1' : '0'
91
+ describe '#marked_letters' do
92
+ it 'returns an array of characters for the marked choices' do
93
+ charr = img.mark_chars.split('').map { |c| [c] }
94
+ expect(omr.marked_letters).to eq charr
82
95
  end
83
- mf.puts x.join(' ')
84
96
  end
85
- mf.close
86
97
  end
87
98
 
88
- context 'creating overlays' do
89
- it 'registration highlighted' do
90
- omr.save_registration "spec/out/registration/#{fn}"
99
+ context 'creating overlays and saving resulting JPEGs' do
100
+ it 'highlights registration' do
101
+ omr.save_registration "spec/out/JD-registration.jpeg"
91
102
  end
92
103
 
93
- it 'highlights all choice cells' do
104
+ it 'highlights the barcode' do
105
+ omr.overlay :highlight, :barcode
106
+ omr.save "spec/out/JD-highlight-barcode.jpeg"
107
+ end
108
+
109
+ it 'highlights all requested choice cells' do
94
110
  omr.set_choices [5] * 32
95
111
  omr.overlay :highlight, :all
96
- omr.save "spec/out/highlight/all-#{fn}"
112
+ omr.save "spec/out/JD-highlight-all.jpeg"
97
113
  end
98
114
 
99
115
  it 'highlights all possible choice cells' do
100
- omr.set_choices [5] * 30
101
- omr.overlay :highlight, :max
102
- omr.save "spec/out/highlight/max-#{fn}"
116
+ omr.set_choices [5] * 30 # this will be ignored
117
+ omr.overlay :highlight, :max
118
+ omr.save "spec/out/JD-highlight-max.jpeg"
103
119
  end
104
120
 
105
121
  it 'highlights marked cells' do
106
122
  omr.overlay :highlight, :marked
107
- omr.save "spec/out/highlight/marked-#{fn}"
123
+ omr.save "spec/out/JD-highlight-marked.jpeg"
108
124
  end
109
125
 
110
- it 'checks marked cells' do
111
- omr.overlay :check, :marked
112
- omr.save "spec/out/mark/#{fn}"
126
+ it 'highlights marked cells (as default overlay)' do
127
+ omr.overlay :highlight
128
+ omr.save "spec/out/JD-highlight-marked-def.jpeg"
113
129
  end
114
130
 
115
- it 'checks the first 32 marked cells' do
116
- omr.set_choices [5] * 32
117
- omr.overlay :check, :marked
118
- omr.save "spec/out/mark/part-#{fn}"
131
+ it 'highlights arbitrary cells' do
132
+ omr.overlay :highlight, [[1,2], [], [0,1,2,3,4], [3]]
133
+ omr.save "spec/out/JD-highlight-some.jpeg"
119
134
  end
120
135
 
121
- it 'outlines arbitrary cells' do
122
- omr.overlay :outline, [[1,2], [], [0,1,2,3,4], [3]]
123
- omr.save "spec/out/outline/some-#{fn}"
136
+ it 'highlights and crosses marked cells' do
137
+ omr.overlay :highlight
138
+ omr.overlay :check
139
+ omr.save "spec/out/JD-highlight-and-cross.jpeg"
124
140
  end
125
141
 
126
- it 'outlines and crosses marked cells' do
127
- omr.overlay :outline, standard_mark_array(24)
142
+ it 'checks marked cells' do
128
143
  omr.overlay :check
129
- omr.save "spec/out/outline/#{fn}"
144
+ omr.save "spec/out/JD-check-marked.jpeg"
130
145
  end
131
146
 
132
- it 'highlights the barcode' do
133
- omr.overlay :outline, :barcode
134
- omr.save "spec/out/barcode/#{fn}"
147
+ it 'outlines marked cells' do
148
+ omr.overlay :outline
149
+ omr.save "spec/out/JD-outline-marked.jpeg"
150
+ end
151
+ end
152
+
153
+ context 'requesting invalid responses and choices' do
154
+ it 'raises an ArgumentError if the maximum number of responses is exceeded' do
155
+ one_too_many = [[0]] * 121
156
+ expect { omr.overlay(:check, one_too_many)}.to raise_error(ArgumentError)
157
+ end
158
+
159
+ it 'raises an ArgumentError if the maximum number of choices is exceeded' do
160
+ one_too_many = [[5]]
161
+ expect { omr.overlay(:check, one_too_many)}.to raise_error(ArgumentError)
135
162
  end
136
163
  end
137
164
  end
138
165
 
139
- context 'systematic tests', exclude: true do
166
+ context 'systematic tests' do
140
167
  let(:bila) { 'CCEBEBCEEACCDCABDBEBCADEADDCCCACCACDBBDAECDDABDEEBCEEDCBAAADEEEEDCADEABCBDECCCCDDDCABBECAADADBBEEABA'.split '' }
141
168
  let(:bila0) { SheetOMR.new 'spec/samples/syst/bila0.jpg', choices: [5]*100, layout: 'spec/samples/syst/layout.yml'}
142
169
  let(:bila1) { SheetOMR.new 'spec/samples/syst/bila1.jpg', choices: [5]*100, layout: 'spec/samples/syst/layout.yml'}
@@ -165,43 +192,44 @@ module Mork
165
192
  let(:barr2) { SheetOMR.new 'spec/samples/syst/barr2.jpg', choices: [5]*100, layout: 'spec/samples/syst/layout.yml'}
166
193
 
167
194
  it 'checks bila' do
168
- expect(bila0.mark_char_array.flatten).to eq(bila)
169
- expect(bila1.mark_char_array.flatten).to eq(bila)
170
- expect(bila2.mark_char_array.flatten).to eq(bila)
171
- expect(bila3.mark_char_array.flatten).to eq(bila)
172
- expect(bila4.mark_char_array.flatten).to eq(bila)
195
+ expect(bila0.marked_letters.flatten).to eq(bila)
196
+ expect(bila1.marked_letters.flatten).to eq(bila)
197
+ expect(bila2.marked_letters.flatten).to eq(bila)
198
+ expect(bila3.marked_letters.flatten).to eq(bila)
199
+ expect(bila4.marked_letters.flatten).to eq(bila)
173
200
  end
174
201
 
175
202
  it 'checks dald' do
176
- expect(dald0.mark_char_array.flatten).to eq(dald)
177
- expect(dald1.mark_char_array.flatten).to eq(dald)
178
- expect(dald2.mark_char_array.flatten).to eq(dald)
179
- expect(dald3.mark_char_array.flatten).to eq(dald)
180
- expect(dald4.mark_char_array.flatten).to eq(dald)
203
+ expect(dald0.marked_letters.flatten).to eq(dald)
204
+ expect(dald1.marked_letters.flatten).to eq(dald)
205
+ expect(dald2.marked_letters.flatten).to eq(dald)
206
+ expect(dald3.marked_letters.flatten).to eq(dald)
207
+ expect(dald4.marked_letters.flatten).to eq(dald)
181
208
  end
182
209
 
183
210
  it 'checks cost' do
184
- expect(cost0.mark_char_array.flatten).to eq(cost)
185
- expect(cost1.mark_char_array.flatten).to eq(cost)
186
- expect(cost2.mark_char_array.flatten).to eq(cost)
187
- expect(cost3.mark_char_array.flatten).to eq(cost)
188
- expect(cost4.mark_char_array.flatten).to eq(cost)
211
+ expect(cost0.marked_letters.flatten).to eq(cost)
212
+ expect(cost1.marked_letters.flatten).to eq(cost)
213
+ expect(cost2.marked_letters.flatten).to eq(cost)
214
+ expect(cost3.marked_letters.flatten).to eq(cost)
215
+ end
216
+
217
+ it 'fails to register cost4 because the BR corner is too far' do
218
+ expect(cost4.status).to eq({tl: :ok, tr: :ok, br: :edgy, bl: :ok})
189
219
  end
190
220
 
191
221
  it 'checks bone' do
192
- expect(bone0.mark_char_array.flatten).to eq(bone)
193
- expect(bone1.mark_char_array.flatten).to eq(bone)
194
- expect(bone2.mark_char_array.flatten).to eq(bone)
222
+ expect(bone0.marked_letters.flatten).to eq(bone)
223
+ expect(bone1.marked_letters.flatten).to eq(bone)
224
+ expect(bone2.marked_letters.flatten).to eq(bone)
195
225
  end
196
226
 
197
227
  it 'checks barr' do
198
- expect(barr0.mark_char_array.flatten).to eq(barr)
199
- expect(barr1.mark_char_array.flatten).to eq(barr)
200
- expect(barr2.mark_char_array.flatten).to eq(barr)
228
+ expect(barr0.marked_letters.flatten).to eq(barr)
229
+ expect(barr1.marked_letters.flatten).to eq(barr)
230
+ expect(barr2.marked_letters.flatten).to eq(barr)
201
231
  end
202
-
203
232
  end
204
-
205
233
  # context "multi-page pdf" do
206
234
  # before(:all) do
207
235
  # @mlist = MimageList.new('spec/samples/two_pages.pdf')
@@ -236,3 +264,14 @@ module Mork
236
264
  end
237
265
  end
238
266
 
267
+
268
+ # it 'writes out markedness' do
269
+ # mf = File.open('spec/out/text/marked.txt', 'w')
270
+ # img.nitems.times do |q|
271
+ # x = 5.times.map do |c|
272
+ # omr.marked?(q,c) ? '1' : '0'
273
+ # end
274
+ # mf.puts x.join(' ')
275
+ # end
276
+ # mf.close
277
+ # end
@@ -107,7 +107,7 @@ module Mork
107
107
  end
108
108
 
109
109
  it 'creates 20 PDF sheets' do
110
- c = 20.times.collect do |x|
110
+ c = 20.times.map do |x|
111
111
  content.merge({ header: {title: "Test #{x+1}"}, barcode: x})
112
112
  end
113
113
  SheetPDF.new(c).save dest('p20')
Binary file
@@ -8,6 +8,7 @@ jdoe1:
8
8
  width: 1240
9
9
  height: 1754
10
10
  mark_array: [[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4],[0],[1],[2],[3],[4]]
11
+ mark_chars: 'ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE'
11
12
  tl: [63, 67]
12
13
  tr: [1182, 68]
13
14
  br: [1178, 1704]
@@ -18,4 +19,5 @@ reg-mark:
18
19
  centroid-x: 92
19
20
  centroid-y: 91
20
21
 
21
-
22
+ corrupted-pdf:
23
+ image_path: spec/samples/corrupt.pdf
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mork
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.13.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Giuseppe Bertini
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-21 00:00:00.000000000 Z
11
+ date: 2018-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: narray
@@ -30,140 +30,140 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '4.5'
33
+ version: '4.8'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '4.5'
40
+ version: '4.8'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: prawn
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '2.1'
47
+ version: '2.2'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '2.1'
54
+ version: '2.2'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: deep_merge
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.0'
61
+ version: '1.2'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.0'
68
+ version: '1.2'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '10.3'
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '10.3'
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '3.1'
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '3.1'
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: guard
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '2.6'
103
+ version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '2.6'
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: guard-rspec
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '4.3'
117
+ version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '4.3'
124
+ version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: guard-shell
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '0.6'
131
+ version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '0.6'
138
+ version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: awesome_print
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '1.2'
145
+ version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '1.2'
152
+ version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: byebug
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: '9.0'
159
+ version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: '9.0'
166
+ version: '0'
167
167
  description: Optical mark recognition of multiple-choice tests and surveys. Low-level
168
168
  ruby library to generate response sheets in PDF form and to automatically score
169
169
  manually filled-out forms.
@@ -174,6 +174,7 @@ extensions: []
174
174
  extra_rdoc_files: []
175
175
  files:
176
176
  - ".gitignore"
177
+ - ".travis.yml"
177
178
  - ".yardopts"
178
179
  - Gemfile
179
180
  - Guardfile
@@ -195,6 +196,7 @@ files:
195
196
  - lib/mork/version.rb
196
197
  - mork.gemspec
197
198
  - mork.sublime-project
199
+ - mork.sublime-workspace
198
200
  - spec/mork/coord_spec.rb
199
201
  - spec/mork/grid_omr_spec.rb
200
202
  - spec/mork/grid_spec.rb
@@ -203,19 +205,14 @@ files:
203
205
  - spec/mork/npatch_spec.rb
204
206
  - spec/mork/sheet_omr_spec.rb
205
207
  - spec/mork/sheet_pdf_spec.rb
206
- - spec/out/barcode/.gitignore
207
- - spec/out/highlight/.gitignore
208
- - spec/out/mark/.gitignore
209
- - spec/out/outline/.gitignore
210
208
  - spec/out/pdf/.gitignore
211
- - spec/out/registration/.gitignore
212
- - spec/out/text/.gitignore
213
209
  - spec/samples/angolo.jpg
214
210
  - spec/samples/angolo2.jpg
215
211
  - spec/samples/angolo3.jpg
216
212
  - spec/samples/base_layout.yml
217
213
  - spec/samples/boxy.yml
218
214
  - spec/samples/content.yml
215
+ - spec/samples/corrupt.pdf
219
216
  - spec/samples/grid.yml
220
217
  - spec/samples/grid160.yml
221
218
  - spec/samples/grid_omr_layout.yml
@@ -225,6 +222,7 @@ files:
225
222
  - spec/samples/jdoe/JohnDoe3.jpeg
226
223
  - spec/samples/jdoe/layout.yml
227
224
  - spec/samples/layout.yml
225
+ - spec/samples/raffa-ige.jpg
228
226
  - spec/samples/reg_mark.jpg
229
227
  - spec/samples/rm00.jpeg
230
228
  - spec/samples/rm01.jpeg
@@ -267,7 +265,6 @@ files:
267
265
  - spec/samples/syst/histo.m
268
266
  - spec/samples/syst/layout.yml
269
267
  - spec/spec_helper.rb
270
- - test_reg.m
271
268
  homepage: https://github.com/giuseb/mork
272
269
  licenses:
273
270
  - MIT
@@ -280,7 +277,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
280
277
  requirements:
281
278
  - - ">="
282
279
  - !ruby/object:Gem::Version
283
- version: 2.1.9
280
+ version: 2.4.0
284
281
  required_rubygems_version: !ruby/object:Gem::Requirement
285
282
  requirements:
286
283
  - - ">="
@@ -288,9 +285,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
288
285
  version: '0'
289
286
  requirements: []
290
287
  rubyforge_project:
291
- rubygems_version: 2.5.1
288
+ rubygems_version: 2.7.6
292
289
  signing_key:
293
290
  specification_version: 4
294
291
  summary: Optical mark recognition of multiple-choice tests and surveys
295
292
  test_files: []
296
- has_rdoc: