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.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/.travis.yml +3 -0
- data/README.md +8 -10
- data/Rakefile +4 -1
- data/lib/mork/extensions.rb +1 -1
- data/lib/mork/grid.rb +1 -1
- data/lib/mork/grid_const.rb +8 -8
- data/lib/mork/grid_omr.rb +1 -1
- data/lib/mork/grid_pdf.rb +2 -2
- data/lib/mork/magicko.rb +67 -21
- data/lib/mork/mimage.rb +15 -3
- data/lib/mork/sheet_omr.rb +29 -26
- data/lib/mork/sheet_pdf.rb +12 -8
- data/lib/mork/version.rb +1 -1
- data/mork.gemspec +11 -12
- data/mork.sublime-workspace +2566 -0
- data/spec/mork/grid_omr_spec.rb +3 -3
- data/spec/mork/magicko_spec.rb +0 -4
- data/spec/mork/sheet_omr_spec.rb +142 -103
- data/spec/mork/sheet_pdf_spec.rb +1 -1
- data/spec/samples/corrupt.pdf +0 -0
- data/spec/samples/info.yml +3 -1
- data/spec/samples/raffa-ige.jpg +0 -0
- metadata +28 -32
- data/spec/out/barcode/.gitignore +0 -4
- data/spec/out/highlight/.gitignore +0 -4
- data/spec/out/mark/.gitignore +0 -4
- data/spec/out/outline/.gitignore +0 -4
- data/spec/out/registration/.gitignore +0 -4
- data/spec/out/text/.gitignore +0 -4
- data/test_reg.m +0 -39
data/spec/mork/grid_omr_spec.rb
CHANGED
@@ -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
|
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
|
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
|
101
|
+
# @grom.rm_max_search_area_side.should be_an Integer
|
102
102
|
# end
|
103
103
|
# end
|
data/spec/mork/magicko_spec.rb
CHANGED
@@ -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
|
data/spec/mork/sheet_omr_spec.rb
CHANGED
@@ -3,140 +3,167 @@ require 'fileutils'
|
|
3
3
|
|
4
4
|
module Mork
|
5
5
|
describe SheetOMR do
|
6
|
-
context '
|
7
|
-
|
8
|
-
|
9
|
-
|
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 '
|
21
|
-
it '
|
22
|
-
|
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
|
-
|
27
|
-
|
28
|
-
|
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
|
-
|
33
|
-
|
34
|
-
|
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
|
-
|
39
|
-
|
40
|
-
|
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
|
-
|
45
|
-
|
46
|
-
|
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
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
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
|
-
|
60
|
-
|
61
|
-
|
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
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
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
|
-
|
72
|
-
|
73
|
-
|
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
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
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
|
90
|
-
omr.save_registration "spec/out/registration
|
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
|
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
|
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
|
-
|
102
|
-
omr.save "spec/out/highlight
|
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
|
123
|
+
omr.save "spec/out/JD-highlight-marked.jpeg"
|
108
124
|
end
|
109
125
|
|
110
|
-
it '
|
111
|
-
omr.overlay :
|
112
|
-
omr.save "spec/out/
|
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 '
|
116
|
-
omr.
|
117
|
-
omr.
|
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 '
|
122
|
-
omr.overlay :
|
123
|
-
omr.
|
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 '
|
127
|
-
omr.overlay :outline, standard_mark_array(24)
|
142
|
+
it 'checks marked cells' do
|
128
143
|
omr.overlay :check
|
129
|
-
omr.save "spec/out/
|
144
|
+
omr.save "spec/out/JD-check-marked.jpeg"
|
130
145
|
end
|
131
146
|
|
132
|
-
it '
|
133
|
-
omr.overlay :outline
|
134
|
-
omr.save "spec/out/
|
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'
|
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.
|
169
|
-
expect(bila1.
|
170
|
-
expect(bila2.
|
171
|
-
expect(bila3.
|
172
|
-
expect(bila4.
|
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.
|
177
|
-
expect(dald1.
|
178
|
-
expect(dald2.
|
179
|
-
expect(dald3.
|
180
|
-
expect(dald4.
|
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.
|
185
|
-
expect(cost1.
|
186
|
-
expect(cost2.
|
187
|
-
expect(cost3.
|
188
|
-
|
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.
|
193
|
-
expect(bone1.
|
194
|
-
expect(bone2.
|
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.
|
199
|
-
expect(barr1.
|
200
|
-
expect(barr2.
|
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
|
data/spec/mork/sheet_pdf_spec.rb
CHANGED
Binary file
|
data/spec/samples/info.yml
CHANGED
@@ -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
|
Binary file
|
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.
|
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:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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
|
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
|
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: '
|
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: '
|
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: '
|
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: '
|
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.
|
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.
|
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:
|