traject_profiling 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.coveralls.yml +1 -0
- data/.rubocop.yml +26 -0
- data/.rubocop_todo.yml +23 -0
- data/.travis.yml +3 -1
- data/README.md +7 -4
- data/Rakefile +7 -8
- data/lib/traject/profiling.rb +3 -2
- data/lib/traject/profiling/f880_macros.rb +68 -0
- data/lib/traject/profiling/field_macros.rb +57 -9
- data/lib/traject/profiling/version.rb +1 -1
- data/spec/f880_macros_spec.rb +603 -0
- data/spec/field_macros_spec.rb +346 -24
- data/spec/spec_helper.rb +15 -3
- data/traject_profiling.gemspec +18 -15
- metadata +52 -4
data/spec/field_macros_spec.rb
CHANGED
@@ -1,20 +1,19 @@
|
|
1
|
-
|
2
1
|
RSpec.describe 'field_macros' do
|
3
2
|
|
4
|
-
let!(:indexer)
|
3
|
+
let!(:indexer) do
|
5
4
|
i = Traject::Indexer.new
|
6
5
|
i.instance_eval do
|
7
6
|
extend Traject::Profiling::Macros
|
8
7
|
end
|
9
8
|
i
|
10
|
-
|
9
|
+
end # let! indexer
|
11
10
|
|
12
|
-
context
|
13
|
-
let!(:record)
|
11
|
+
context 'field_count' do
|
12
|
+
let!(:record) do
|
14
13
|
marcxml_str =
|
15
14
|
'<record xmlns="http://www.loc.gov/MARC21/slim">
|
16
15
|
<leader>01052cam a2200313 i 4500</leader>
|
17
|
-
<controlfield tag="001">
|
16
|
+
<controlfield tag="001">field_count</controlfield>
|
18
17
|
<controlfield tag="008">140604t20152015enk b 001 0 eng d</controlfield>
|
19
18
|
<datafield ind1="1" ind2="0" tag="245">
|
20
19
|
<subfield code="a">Slippery noodles</subfield>
|
@@ -27,38 +26,361 @@ RSpec.describe 'field_macros' do
|
|
27
26
|
</datafield>
|
28
27
|
</record>'
|
29
28
|
parse_marc(marcxml_str)
|
30
|
-
|
29
|
+
end # let! record
|
31
30
|
|
32
31
|
it 'single occurrence of tag' do
|
33
32
|
indexer.instance_eval do
|
34
|
-
to_field '
|
33
|
+
to_field 'f245count', field_count('245')
|
35
34
|
end
|
36
|
-
|
37
|
-
expect(output['245count']).to eq ['1']
|
35
|
+
expect(indexer.map_record(record)['f245count']).to eq ['1']
|
38
36
|
end
|
39
37
|
it 'mult occurrences of tag' do
|
40
38
|
indexer.instance_eval do
|
41
|
-
to_field '
|
39
|
+
to_field 'f700count', field_count('700')
|
42
40
|
end
|
43
|
-
|
44
|
-
expect(output['700count']).to eq ['2']
|
41
|
+
expect(indexer.map_record(record)['f700count']).to eq ['2']
|
45
42
|
end
|
46
43
|
it 'no occurrences of tag: field not in output_hash' do
|
47
44
|
indexer.instance_eval do
|
48
|
-
to_field '
|
45
|
+
to_field 'f100count', field_count('100')
|
49
46
|
end
|
50
|
-
|
51
|
-
expect(output['100count']).to eq nil
|
47
|
+
expect(indexer.map_record(record)['f100count']).to eq nil
|
52
48
|
end
|
53
49
|
end # field_count
|
54
50
|
|
55
|
-
|
51
|
+
context 'field_ind' do
|
52
|
+
let!(:record) do
|
53
|
+
marcxml_str =
|
54
|
+
'<record xmlns="http://www.loc.gov/MARC21/slim">
|
55
|
+
<leader>01052cam a2200313 i 4500</leader>
|
56
|
+
<controlfield tag="001">field_ind</controlfield>
|
57
|
+
<controlfield tag="008">140604t20152015enk b 001 0 eng d</controlfield>
|
58
|
+
<datafield ind1="1" ind2="2" tag="100">
|
59
|
+
<subfield code="a">numeric indicators</subfield>
|
60
|
+
</datafield>
|
61
|
+
<datafield ind1=" " ind2="_" tag="700">
|
62
|
+
<subfield code="a">blank and punctuation indicators</subfield>
|
63
|
+
</datafield>
|
64
|
+
<datafield ind1="a" ind2="b" tag="800" >
|
65
|
+
<subfield code="a">alpha indicators</subfield>
|
66
|
+
</datafield>
|
67
|
+
</record>'
|
68
|
+
parse_marc(marcxml_str)
|
69
|
+
end # let! record
|
70
|
+
|
71
|
+
it 'uses first indicator when second param is 1 (string)' do
|
72
|
+
indexer.instance_eval do
|
73
|
+
to_field 'f100ind1', field_ind('100', '1')
|
74
|
+
end
|
75
|
+
expect(indexer.map_record(record)['f100ind1']).to eq ['1']
|
76
|
+
end
|
77
|
+
it 'uses first indicator when second param is 1 (int)' do
|
78
|
+
indexer.instance_eval do
|
79
|
+
to_field 'f100ind1', field_ind('100', 1)
|
80
|
+
end
|
81
|
+
expect(indexer.map_record(record)['f100ind1']).to eq ['1']
|
82
|
+
end
|
83
|
+
it 'uses second indicator when second param is 2 (string)' do
|
84
|
+
indexer.instance_eval do
|
85
|
+
to_field 'f100ind2', field_ind('100', '2')
|
86
|
+
end
|
87
|
+
expect(indexer.map_record(record)['f100ind2']).to eq ['2']
|
88
|
+
end
|
89
|
+
it 'uses second indicator when second param is 2 (int)' do
|
90
|
+
indexer.instance_eval do
|
91
|
+
to_field 'f100ind2', field_ind('100', 2)
|
92
|
+
end
|
93
|
+
expect(indexer.map_record(record)['f100ind2']).to eq ['2']
|
94
|
+
end
|
95
|
+
it 'returns nil (field not in output_hash) when second param is not 1 or 2' do
|
96
|
+
indexer.instance_eval do
|
97
|
+
to_field 'f100ind_3', field_ind('100', '3')
|
98
|
+
to_field 'f100ind_first', field_ind('100', 'first')
|
99
|
+
to_field 'f100ind_a', field_ind('100', 'a')
|
100
|
+
end
|
101
|
+
output_hash = indexer.map_record(record)
|
102
|
+
expect(output_hash['f100ind_3']).to eq nil
|
103
|
+
expect(output_hash['f100ind_first']).to eq nil
|
104
|
+
expect(output_hash['f100ind_a']).to eq nil
|
105
|
+
end
|
106
|
+
it 'single instance of tag returns single char value' do
|
107
|
+
indexer.instance_eval do
|
108
|
+
to_field 'f100ind1', field_ind('100', 1)
|
109
|
+
end
|
110
|
+
expect(indexer.map_record(record)['f100ind1']).to eq ['1']
|
111
|
+
end
|
112
|
+
it 'multiple instances of tag all with same ind value returns unrepeated char value' do
|
113
|
+
marcxml =
|
114
|
+
'<record xmlns="http://www.loc.gov/MARC21/slim">
|
115
|
+
<leader>01052cam a2200313 i 4500</leader>
|
116
|
+
<controlfield tag="001">field_ind</controlfield>
|
117
|
+
<controlfield tag="008">140604t20152015enk b 001 0 eng d</controlfield>
|
118
|
+
<datafield ind1="1" ind2=" " tag="700">
|
119
|
+
<subfield code="a">numeric indicators</subfield>
|
120
|
+
</datafield>
|
121
|
+
<datafield ind1="1" ind2=" " tag="700">
|
122
|
+
<subfield code="a">blank and punctuation indicators</subfield>
|
123
|
+
</datafield>
|
124
|
+
</record>'
|
125
|
+
indexer.instance_eval do
|
126
|
+
to_field 'f700ind1', field_ind('700', 1)
|
127
|
+
end
|
128
|
+
expect(indexer.map_record(parse_marc(marcxml))['f700ind1']).to eq ['1']
|
129
|
+
end
|
130
|
+
it 'each char used in indicator is a separate value' do
|
131
|
+
marcxml =
|
132
|
+
'<record xmlns="http://www.loc.gov/MARC21/slim">
|
133
|
+
<leader>01052cam a2200313 i 4500</leader>
|
134
|
+
<controlfield tag="001">field_ind</controlfield>
|
135
|
+
<controlfield tag="008">140604t20152015enk b 001 0 eng d</controlfield>
|
136
|
+
<datafield ind1="1" ind2=" " tag="700">
|
137
|
+
<subfield code="a">numeric indicators</subfield>
|
138
|
+
</datafield>
|
139
|
+
<datafield ind1="2" ind2=" " tag="700">
|
140
|
+
<subfield code="a">blank and punctuation indicators</subfield>
|
141
|
+
</datafield>
|
142
|
+
<datafield ind1="3" ind2=" " tag="700">
|
143
|
+
<subfield code="a">blank and punctuation indicators</subfield>
|
144
|
+
</datafield>
|
145
|
+
</record>'
|
146
|
+
indexer.instance_eval do
|
147
|
+
to_field 'f700ind1', field_ind('700', 1)
|
148
|
+
end
|
149
|
+
expect(indexer.map_record(parse_marc(marcxml))['f700ind1']).to eq %w(1 2 3)
|
150
|
+
end
|
151
|
+
it 'blank value included' do
|
152
|
+
indexer.instance_eval do
|
153
|
+
to_field 'f700ind1', field_ind('700', 1)
|
154
|
+
end
|
155
|
+
expect(indexer.map_record(record)['f700ind1']).to eq [' ']
|
156
|
+
end
|
157
|
+
it 'non-alphanum values included' do
|
158
|
+
indexer.instance_eval do
|
159
|
+
to_field 'f700ind2', field_ind('700', 2)
|
160
|
+
end
|
161
|
+
expect(indexer.map_record(record)['f700ind2']).to eq ['_']
|
162
|
+
end
|
163
|
+
it 'no occurrences of tag: field not in output_hash' do
|
164
|
+
indexer.instance_eval do
|
165
|
+
to_field 'f245ind1', field_ind('245', 1)
|
166
|
+
end
|
167
|
+
expect(indexer.map_record(record)['f245ind1']).to eq nil
|
168
|
+
end
|
169
|
+
context 'dedup=false' do
|
170
|
+
it 'multiple occurrences of single value' do
|
171
|
+
marcxml =
|
172
|
+
'<record xmlns="http://www.loc.gov/MARC21/slim">
|
173
|
+
<leader>01052cam a2200313 i 4500</leader>
|
174
|
+
<controlfield tag="001">field_ind</controlfield>
|
175
|
+
<controlfield tag="008">140604t20152015enk b 001 0 eng d</controlfield>
|
176
|
+
<datafield ind1="1" ind2=" " tag="700">
|
177
|
+
<subfield code="a">numeric indicators</subfield>
|
178
|
+
</datafield>
|
179
|
+
<datafield ind1="1" ind2=" " tag="700">
|
180
|
+
<subfield code="a">blank and punctuation indicators</subfield>
|
181
|
+
</datafield>
|
182
|
+
</record>'
|
183
|
+
indexer.instance_eval do
|
184
|
+
to_field 'f700ind1', field_ind('700', 1, false)
|
185
|
+
to_field 'f700ind2', field_ind('700', 2, false)
|
186
|
+
end
|
187
|
+
expect(indexer.map_record(parse_marc(marcxml))['f700ind1']).to eq ['1', '1']
|
188
|
+
expect(indexer.map_record(parse_marc(marcxml))['f700ind2']).to eq [' ', ' ']
|
189
|
+
end
|
190
|
+
end # dedup=false
|
191
|
+
end # field_ind
|
192
|
+
|
193
|
+
context 'field_codes' do
|
194
|
+
it 'single occurrence of single subfield in single tag' do
|
195
|
+
marcxml_str =
|
196
|
+
'<record xmlns="http://www.loc.gov/MARC21/slim">
|
197
|
+
<leader>01052cam a2200313 i 4500</leader>
|
198
|
+
<controlfield tag="001">field_codes</controlfield>
|
199
|
+
<controlfield tag="008">140604t20152015enk b 001 0 eng d</controlfield>
|
200
|
+
<datafield ind1=" " ind2=" " tag="035">
|
201
|
+
<subfield code="a">(OCoLC-I)872526434</subfield>
|
202
|
+
</datafield>
|
203
|
+
</record>'
|
204
|
+
indexer.instance_eval do
|
205
|
+
to_field 'f_codes', field_codes('035')
|
206
|
+
end
|
207
|
+
expect(indexer.map_record(parse_marc(marcxml_str))['f_codes']).to eq ['a']
|
208
|
+
end
|
209
|
+
it 'single occurrence of multiple subfields in single tag' do
|
210
|
+
marcxml_str =
|
211
|
+
'<record xmlns="http://www.loc.gov/MARC21/slim">
|
212
|
+
<leader>01052cam a2200313 i 4500</leader>
|
213
|
+
<controlfield tag="001">field_codes</controlfield>
|
214
|
+
<controlfield tag="008">140604t20152015enk b 001 0 eng d</controlfield>
|
215
|
+
<datafield ind1=" " ind2=" " tag="300">
|
216
|
+
<subfield code="a">2 videodiscs :</subfield>
|
217
|
+
<subfield code="b">sound, color ;</subfield>
|
218
|
+
<subfield code="c">4 3/4 in. +</subfield>
|
219
|
+
<subfield code="e">2 booklets (24 cm)</subfield>
|
220
|
+
</datafield>
|
221
|
+
</record>'
|
222
|
+
indexer.instance_eval do
|
223
|
+
to_field 'f_codes', field_codes('300')
|
224
|
+
end
|
225
|
+
expect(indexer.map_record(parse_marc(marcxml_str))['f_codes']).to eq %w(a b c e)
|
226
|
+
end
|
227
|
+
it 'single occurrence of multiple subfields in multiple tags' do
|
228
|
+
marcxml_str =
|
229
|
+
'<record xmlns="http://www.loc.gov/MARC21/slim">
|
230
|
+
<leader>01052cam a2200313 i 4500</leader>
|
231
|
+
<controlfield tag="001">field_codes</controlfield>
|
232
|
+
<controlfield tag="008">140604t20152015enk b 001 0 eng d</controlfield>
|
233
|
+
<datafield ind1=" " ind2="4" tag="666">
|
234
|
+
<subfield code="a">suba</subfield>
|
235
|
+
<subfield code="b">subb</subfield>
|
236
|
+
</datafield>
|
237
|
+
<datafield ind1=" " ind2="4" tag="666">
|
238
|
+
<subfield code="c">subc</subfield>
|
239
|
+
<subfield code="d">subd</subfield>
|
240
|
+
</datafield>
|
241
|
+
</record>'
|
242
|
+
indexer.instance_eval do
|
243
|
+
to_field 'f_codes', field_codes('666')
|
244
|
+
end
|
245
|
+
expect(indexer.map_record(parse_marc(marcxml_str))['f_codes']).to eq %w(a b c d)
|
246
|
+
end
|
247
|
+
it 'multiple occurrences of single subfield in single tags' do
|
248
|
+
marcxml_str =
|
249
|
+
'<record xmlns="http://www.loc.gov/MARC21/slim">
|
250
|
+
<leader>01052cam a2200313 i 4500</leader>
|
251
|
+
<controlfield tag="001">field_codes</controlfield>
|
252
|
+
<controlfield tag="008">140604t20152015enk b 001 0 eng d</controlfield>
|
253
|
+
<datafield tag="040" ind1=" " ind2=" ">
|
254
|
+
<subfield code="a">BTCTA</subfield>
|
255
|
+
<subfield code="c">BTCTA</subfield>
|
256
|
+
<subfield code="d">OHX</subfield>
|
257
|
+
<subfield code="d">YDXCP</subfield>
|
258
|
+
</datafield>
|
259
|
+
</record>'
|
260
|
+
indexer.instance_eval do
|
261
|
+
to_field 'f_codes', field_codes('040')
|
262
|
+
end
|
263
|
+
expect(indexer.map_record(parse_marc(marcxml_str))['f_codes']).to eq %w(a c d)
|
264
|
+
end
|
265
|
+
it 'multiple occurrences of subfields in multiple tags' do
|
266
|
+
marcxml_str =
|
267
|
+
'<record xmlns="http://www.loc.gov/MARC21/slim">
|
268
|
+
<leader>01052cam a2200313 i 4500</leader>
|
269
|
+
<controlfield tag="001">field_codes</controlfield>
|
270
|
+
<controlfield tag="008">140604t20152015enk b 001 0 eng d</controlfield>
|
271
|
+
<datafield ind1=" " ind2="0" tag="650">
|
272
|
+
<subfield code="a">Food habits</subfield>
|
273
|
+
<subfield code="z">China</subfield>
|
274
|
+
<subfield code="x">History.</subfield>
|
275
|
+
</datafield>
|
276
|
+
<datafield ind1=" " ind2="0" tag="650">
|
277
|
+
<subfield code="a">Cooking</subfield>
|
278
|
+
<subfield code="z">China</subfield>
|
279
|
+
<subfield code="x">History.</subfield>
|
280
|
+
</datafield>
|
281
|
+
</record>'
|
282
|
+
indexer.instance_eval do
|
283
|
+
to_field 'f_codes', field_codes('650')
|
284
|
+
end
|
285
|
+
expect(indexer.map_record(parse_marc(marcxml_str))['f_codes']).to eq %w(a z x)
|
286
|
+
end
|
287
|
+
it 'numeric subfields included' do
|
288
|
+
marcxml_str =
|
289
|
+
'<record xmlns="http://www.loc.gov/MARC21/slim">
|
290
|
+
<leader>01052cam a2200313 i 4500</leader>
|
291
|
+
<controlfield tag="001">field_codes</controlfield>
|
292
|
+
<controlfield tag="008">140604t20152015enk b 001 0 eng d</controlfield>
|
293
|
+
<datafield ind1="1" ind2="0" tag="245">
|
294
|
+
<subfield code="6">880-01</subfield>
|
295
|
+
<subfield code="a">suba</subfield>
|
296
|
+
<subfield code="b">subb</subfield>
|
297
|
+
<subfield code="c">subc</subfield>
|
298
|
+
</datafield>
|
299
|
+
</record>'
|
300
|
+
indexer.instance_eval do
|
301
|
+
to_field 'f_codes', field_codes('245')
|
302
|
+
end
|
303
|
+
expect(indexer.map_record(parse_marc(marcxml_str))['f_codes']).to eq %w(6 a b c)
|
304
|
+
end
|
305
|
+
it 'non-alphanum values included' do
|
306
|
+
marcxml_str =
|
307
|
+
'<record xmlns="http://www.loc.gov/MARC21/slim">
|
308
|
+
<leader>01052cam a2200313 i 4500</leader>
|
309
|
+
<controlfield tag="001">field_codes</controlfield>
|
310
|
+
<controlfield tag="008">140604t20152015enk b 001 0 eng d</controlfield>
|
311
|
+
<datafield ind1=" " ind2="0" tag="650">
|
312
|
+
<subfield code="a">Food habits</subfield>
|
313
|
+
<subfield code="z">China</subfield>
|
314
|
+
<subfield code="x">History.</subfield>
|
315
|
+
<subfield code="=">^A2383609</subfield>
|
316
|
+
</datafield>
|
317
|
+
<datafield ind1="0" ind2="2" tag="730">
|
318
|
+
<subfield code="i">Contains (work):</subfield>
|
319
|
+
<subfield code="a">Te doy mis ojos.</subfield>
|
320
|
+
<subfield code="?">UNAUTHORIZED</subfield>
|
321
|
+
</datafield>
|
322
|
+
</record>'
|
323
|
+
indexer.instance_eval do
|
324
|
+
to_field 'f650_codes', field_codes('650')
|
325
|
+
to_field 'f730_codes', field_codes('730')
|
326
|
+
end
|
327
|
+
output_hash = indexer.map_record(parse_marc(marcxml_str))
|
328
|
+
expect(output_hash['f650_codes']).to eq %w(a z x =)
|
329
|
+
expect(output_hash['f730_codes']).to eq %w(i a ?)
|
330
|
+
end
|
331
|
+
it 'no occurrences of tag: field not in output_hash' do
|
332
|
+
marcxml_str =
|
333
|
+
'<record xmlns="http://www.loc.gov/MARC21/slim">
|
334
|
+
<leader>01052cam a2200313 i 4500</leader>
|
335
|
+
<controlfield tag="001">field_codes</controlfield>
|
336
|
+
<controlfield tag="008">140604t20152015enk b 001 0 eng d</controlfield>
|
337
|
+
</record>'
|
338
|
+
indexer.instance_eval do
|
339
|
+
to_field 'f_codes', field_codes('245')
|
340
|
+
end
|
341
|
+
expect(indexer.map_record(parse_marc(marcxml_str))['f_codes']).to eq nil
|
342
|
+
end
|
343
|
+
context 'dedup=false' do
|
344
|
+
it 'multiple occurrences of single subfield in single tags' do
|
345
|
+
marcxml_str =
|
346
|
+
'<record xmlns="http://www.loc.gov/MARC21/slim">
|
347
|
+
<leader>01052cam a2200313 i 4500</leader>
|
348
|
+
<controlfield tag="001">field_codes</controlfield>
|
349
|
+
<controlfield tag="008">140604t20152015enk b 001 0 eng d</controlfield>
|
350
|
+
<datafield tag="040" ind1=" " ind2=" ">
|
351
|
+
<subfield code="a">BTCTA</subfield>
|
352
|
+
<subfield code="c">BTCTA</subfield>
|
353
|
+
<subfield code="d">OHX</subfield>
|
354
|
+
<subfield code="d">YDXCP</subfield>
|
355
|
+
<subfield code="d">DLC</subfield>
|
356
|
+
</datafield>
|
357
|
+
</record>'
|
358
|
+
indexer.instance_eval do
|
359
|
+
to_field 'f_codes', field_codes('040', false)
|
360
|
+
end
|
361
|
+
expect(indexer.map_record(parse_marc(marcxml_str))['f_codes']).to eq %w(a c d d d)
|
362
|
+
end
|
363
|
+
it 'multiple occurrences of subfields in multiple tags' do
|
364
|
+
marcxml_str =
|
365
|
+
'<record xmlns="http://www.loc.gov/MARC21/slim">
|
366
|
+
<leader>01052cam a2200313 i 4500</leader>
|
367
|
+
<controlfield tag="001">field_codes</controlfield>
|
368
|
+
<controlfield tag="008">140604t20152015enk b 001 0 eng d</controlfield>
|
369
|
+
<datafield tag="505" ind1=" " ind2=" ">
|
370
|
+
<subfield code="t">blah</subfield>
|
371
|
+
<subfield code="t">blah</subfield>
|
372
|
+
</datafield>
|
373
|
+
<datafield tag="505" ind1=" " ind2=" ">
|
374
|
+
<subfield code="t">blah</subfield>
|
375
|
+
<subfield code="t">blah</subfield>
|
376
|
+
</datafield>
|
377
|
+
</record>'
|
378
|
+
indexer.instance_eval do
|
379
|
+
to_field 'f_codes', field_codes('505', false)
|
380
|
+
end
|
381
|
+
expect(indexer.map_record(parse_marc(marcxml_str))['f_codes']).to eq %w(t t t t)
|
382
|
+
end
|
383
|
+
end # dedup=false
|
384
|
+
end # field_codes
|
56
385
|
|
57
|
-
# @param [String] marcxml_str an xml representation of a MARC record
|
58
|
-
# @raise [Marc::Exception] if nil returned from MARC::XMLReader
|
59
|
-
# @return [MARC::Record] parsed marc_record
|
60
|
-
def parse_marc(marcxml_str)
|
61
|
-
marc_record = MARC::XMLReader.new(StringIO.new(marcxml_str)).to_a.first
|
62
|
-
fail(MARC::Exception, "unable to parse marc record: " + marcxml_str, caller) if marc_record.nil?
|
63
|
-
marc_record
|
64
386
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'coveralls'
|
2
|
+
Coveralls.wear!
|
3
|
+
|
1
4
|
require 'traject'
|
2
5
|
require 'traject/profiling'
|
3
6
|
|
@@ -29,8 +32,8 @@ RSpec.configure do |config|
|
|
29
32
|
config.disable_monkey_patching!
|
30
33
|
|
31
34
|
# This setting enables warnings. It's recommended, but in some cases may
|
32
|
-
#
|
33
|
-
#
|
35
|
+
# be too noisy due to issues in dependencies.
|
36
|
+
# config.warnings = true
|
34
37
|
|
35
38
|
# Many RSpec users commonly either run the entire suite or an individual
|
36
39
|
# file, and it's useful to allow more verbose output when running an
|
@@ -45,7 +48,7 @@ RSpec.configure do |config|
|
|
45
48
|
# Print the 10 slowest examples and example groups at the
|
46
49
|
# end of the spec run, to help surface which specs are running
|
47
50
|
# particularly slow.
|
48
|
-
#config.profile_examples = 10
|
51
|
+
# config.profile_examples = 10
|
49
52
|
|
50
53
|
# Run specs in random order to surface order dependencies. If you find an
|
51
54
|
# order dependency and want to debug it, you can fix the order by providing
|
@@ -54,3 +57,12 @@ RSpec.configure do |config|
|
|
54
57
|
config.order = :random
|
55
58
|
|
56
59
|
end
|
60
|
+
|
61
|
+
# @param [String] marcxml_str an xml representation of a MARC record
|
62
|
+
# @raise [Marc::Exception] if nil returned from MARC::XMLReader
|
63
|
+
# @return [MARC::Record] parsed marc_record
|
64
|
+
def parse_marc(marcxml_str)
|
65
|
+
marc_record = MARC::XMLReader.new(StringIO.new(marcxml_str)).to_a.first
|
66
|
+
fail(MARC::Exception, 'unable to parse marc record: ' + marcxml_str, caller) if marc_record.nil?
|
67
|
+
marc_record
|
68
|
+
end
|
data/traject_profiling.gemspec
CHANGED
@@ -1,30 +1,33 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
lib = File.expand_path(
|
2
|
+
lib = File.expand_path('../lib/', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
4
|
|
5
5
|
require 'traject/profiling/version'
|
6
6
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
|
-
spec.name =
|
8
|
+
spec.name = 'traject_profiling'
|
9
9
|
spec.version = Traject::Profiling::VERSION
|
10
|
-
spec.authors = [
|
11
|
-
spec.email = [
|
12
|
-
spec.summary =
|
13
|
-
spec.description =
|
14
|
-
spec.homepage =
|
15
|
-
spec.license =
|
10
|
+
spec.authors = ['Naomi Dushay']
|
11
|
+
spec.email = ['ndushay@stanford.edu']
|
12
|
+
spec.summary = 'Traject macros to provide profiling information on MARC bibliographic records.'
|
13
|
+
spec.description = 'Profiling macros for MARC bib records; meant to be used with traject to index into Solr.'
|
14
|
+
spec.homepage = 'https://github.com/sul-dlss/traject_profiling.git'
|
15
|
+
spec.license = 'Apache-2.0'
|
16
16
|
|
17
17
|
spec.files = `git ls-files -z`.split("\x0")
|
18
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
|
-
spec.require_paths = [
|
20
|
+
spec.require_paths = ['lib', 'lib/traject', 'lib/traject/profiling']
|
21
21
|
|
22
22
|
spec.add_runtime_dependency 'traject'
|
23
23
|
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
27
|
-
spec.add_development_dependency
|
28
|
-
spec.add_development_dependency
|
29
|
-
spec.add_development_dependency
|
24
|
+
spec.add_development_dependency 'bundler'
|
25
|
+
spec.add_development_dependency 'rake'
|
26
|
+
spec.add_development_dependency 'yard'
|
27
|
+
spec.add_development_dependency 'rspec'
|
28
|
+
spec.add_development_dependency 'pry' # interactive debugging gem
|
29
|
+
spec.add_development_dependency 'pry-byebug' # interactive debugging gem
|
30
|
+
spec.add_development_dependency 'coveralls'
|
31
|
+
spec.add_development_dependency 'rubocop'
|
32
|
+
spec.add_development_dependency 'rubocop-rspec'
|
30
33
|
end
|