mork 0.12.0 → 0.13.2

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.
@@ -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: