stanford-mods 2.4.1 → 2.6.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/.rubocop.yml +2 -2
- data/.rubocop_todo.yml +172 -102
- data/.travis.yml +13 -12
- data/Gemfile +0 -10
- data/lib/stanford-mods/coordinate.rb +3 -0
- data/lib/stanford-mods/date_parsing.rb +12 -0
- data/lib/stanford-mods/imprint.rb +55 -8
- data/lib/stanford-mods/name.rb +2 -0
- data/lib/stanford-mods/origin_info.rb +14 -0
- data/lib/stanford-mods/searchworks.rb +50 -90
- data/lib/stanford-mods/searchworks_languages.rb +2 -0
- data/lib/stanford-mods/searchworks_subjects.rb +3 -2
- data/lib/stanford-mods/version.rb +1 -1
- data/spec/date_parsing_spec.rb +2 -0
- data/spec/fixtures/searchworks_imprint_data.rb +1 -1
- data/spec/fixtures/searchworks_pub_date_data.rb +1 -1
- data/spec/imprint_spec.rb +23 -0
- data/spec/name_spec.rb +3 -0
- data/spec/origin_info_spec.rb +3 -0
- data/spec/physical_location_spec.rb +6 -0
- data/spec/searchworks_format_spec.rb +22 -285
- data/spec/searchworks_pub_dates_spec.rb +1 -0
- data/spec/searchworks_spec.rb +1 -0
- data/spec/searchworks_subject_raw_spec.rb +6 -0
- data/spec/searchworks_subject_spec.rb +2 -12
- data/spec/searchworks_title_spec.rb +36 -0
- data/spec/spec_helper.rb +2 -2
- data/stanford-mods.gemspec +4 -1
- metadata +47 -12
@@ -212,6 +212,7 @@ describe "Date methods (searchworks.rb)" do
|
|
212
212
|
expect(smods_rec.send(:pub_date)).to eq('8--')
|
213
213
|
end
|
214
214
|
end # pub_date
|
215
|
+
|
215
216
|
context "pub_dates (protected)" do
|
216
217
|
it "puts dateIssued values before dateCreated values" do
|
217
218
|
m = "<mods #{ns_decl}><originInfo>
|
data/spec/searchworks_spec.rb
CHANGED
@@ -97,6 +97,7 @@ describe "Searchworks mixin for Stanford::Mods::Record" do
|
|
97
97
|
</mods>"
|
98
98
|
@smods_rec.from_str(m)
|
99
99
|
end
|
100
|
+
|
100
101
|
it "main author (for author_1xx_search)" do
|
101
102
|
expect(@smods_rec).to receive(:main_author_w_date) # in stanford-mods.rb
|
102
103
|
@smods_rec.sw_main_author
|
@@ -128,6 +128,7 @@ describe "Searchworks mixin for Stanford::Mods::Record" do
|
|
128
128
|
</mods>"
|
129
129
|
@smods_rec.from_str m
|
130
130
|
end
|
131
|
+
|
131
132
|
it "uses a ', ' as the separator by default" do
|
132
133
|
expect(@smods_rec.sw_subject_names).to eq ['first, second']
|
133
134
|
end
|
@@ -192,6 +193,7 @@ describe "Searchworks mixin for Stanford::Mods::Record" do
|
|
192
193
|
</mods>"
|
193
194
|
@smods_rec.from_str m
|
194
195
|
end
|
196
|
+
|
195
197
|
it "uses a ' ' as the separator by default" do
|
196
198
|
expect(@smods_rec.sw_subject_titles).to eq ['first second']
|
197
199
|
end
|
@@ -276,6 +278,7 @@ describe "Searchworks mixin for Stanford::Mods::Record" do
|
|
276
278
|
expect(@smods_rec.sw_geographic_search).to eq([])
|
277
279
|
end
|
278
280
|
end
|
281
|
+
|
279
282
|
context "hierarchicalGeographic subelement" do
|
280
283
|
it "should have a separate value for each hierarchicalGeographic element" do
|
281
284
|
m = "<mods #{@ns_decl}>
|
@@ -305,6 +308,7 @@ describe "Searchworks mixin for Stanford::Mods::Record" do
|
|
305
308
|
</subject></mods>"
|
306
309
|
@smods_rec.from_str m
|
307
310
|
end
|
311
|
+
|
308
312
|
it "uses a space as the separator by default" do
|
309
313
|
expect(@smods_rec.sw_geographic_search).to eq ['Canada British Columbia Vancouver']
|
310
314
|
end
|
@@ -313,6 +317,7 @@ describe "Searchworks mixin for Stanford::Mods::Record" do
|
|
313
317
|
end
|
314
318
|
end
|
315
319
|
end # hierarchicalGeographic
|
320
|
+
|
316
321
|
context "geographicCode subelement" do
|
317
322
|
before(:all) do
|
318
323
|
m = "<mods #{@ns_decl}>
|
@@ -324,6 +329,7 @@ describe "Searchworks mixin for Stanford::Mods::Record" do
|
|
324
329
|
@smods_rec.from_str m
|
325
330
|
@geo_search_from_codes = @smods_rec.sw_geographic_search
|
326
331
|
end
|
332
|
+
|
327
333
|
it "should not add untranslated values" do
|
328
334
|
expect(@geo_search_from_codes).not_to include('n-us-md')
|
329
335
|
expect(@geo_search_from_codes).not_to include('e-er')
|
@@ -44,9 +44,6 @@ describe "Subject fields (searchworks.rb)" do
|
|
44
44
|
it "should contain subject <topic> subelement data" do
|
45
45
|
expect(@smods_rec.topic_search).to include(@topic)
|
46
46
|
end
|
47
|
-
it "should contain top level <genre> element data" do
|
48
|
-
expect(@smods_rec.topic_search).to include(@genre)
|
49
|
-
end
|
50
47
|
it "should not contain other subject element data" do
|
51
48
|
expect(@smods_rec.topic_search).not_to include(@cart_coord)
|
52
49
|
expect(@smods_rec.topic_search).not_to include(@s_genre)
|
@@ -64,12 +61,6 @@ describe "Subject fields (searchworks.rb)" do
|
|
64
61
|
@smods_rec.from_str(m)
|
65
62
|
expect(@smods_rec.topic_search).to eq([@topic])
|
66
63
|
end
|
67
|
-
it "should not be nil if there are only <genre> elements (no subject/topic elements)" do
|
68
|
-
m = "<mods #{@ns_decl}><genre>#{@genre}</genre></mods>"
|
69
|
-
@smods_rec = Stanford::Mods::Record.new
|
70
|
-
@smods_rec.from_str(m)
|
71
|
-
expect(@smods_rec.topic_search).to eq([@genre])
|
72
|
-
end
|
73
64
|
context "topic subelement" do
|
74
65
|
it "should have a separate value for each topic element" do
|
75
66
|
m = "<mods #{@ns_decl}>
|
@@ -249,6 +240,7 @@ describe "Subject fields (searchworks.rb)" do
|
|
249
240
|
expect(@smods_rec.subject_other_subvy_search).to be_nil
|
250
241
|
end
|
251
242
|
end
|
243
|
+
|
252
244
|
context "genre subelement" do
|
253
245
|
it "should have a separate value for each genre element" do
|
254
246
|
m = "<mods #{@ns_decl}>
|
@@ -275,14 +267,12 @@ describe "Subject fields (searchworks.rb)" do
|
|
275
267
|
before :each do
|
276
268
|
allow(@smods_rec.sw_logger).to receive(:info).with(/ has subject geographicCode element with untranslated encoding \(iso3166\): <geographicCode authority=.*>us<\/geographicCode>/)
|
277
269
|
end
|
270
|
+
|
278
271
|
it "should be nil if there are no values in the MODS" do
|
279
272
|
@smods_rec = Stanford::Mods::Record.new
|
280
273
|
@smods_rec.from_str(@ng_mods_no_subject.to_s)
|
281
274
|
expect(@smods_rec.subject_all_search).to be_nil
|
282
275
|
end
|
283
|
-
it "should contain top level <genre> element data" do
|
284
|
-
expect(@smods_rec.subject_all_search).to include(@genre)
|
285
|
-
end
|
286
276
|
it "should not contain cartographic sub element" do
|
287
277
|
expect(@smods_rec.subject_all_search).not_to include(@cart_coord)
|
288
278
|
end
|
@@ -27,6 +27,19 @@ describe 'title fields (searchworks.rb)' do
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
+
context 'when titleInfo contains a subTitle but no title' do
|
31
|
+
let(:record) do
|
32
|
+
m = "<mods #{@ns_decl}><titleInfo><subTitle>An overview from 1942-1950</subTitle></titleInfo></mods>"
|
33
|
+
rec = Stanford::Mods::Record.new
|
34
|
+
rec.from_str m
|
35
|
+
rec
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'returns nil' do
|
39
|
+
expect(record.sw_full_title).to be_nil
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
30
43
|
context 'missing title node' do
|
31
44
|
it 'deals with missing titleInfo node' do
|
32
45
|
m = "<mods #{@ns_decl}></mods>"
|
@@ -80,6 +93,7 @@ describe 'title fields (searchworks.rb)' do
|
|
80
93
|
expect(@smods_rec.sw_full_title).to eq 'The Olympics!'
|
81
94
|
end
|
82
95
|
end # no subtitle
|
96
|
+
|
83
97
|
context 'subtitle' do
|
84
98
|
it 'end title with a colon' do
|
85
99
|
m = "<mods #{@ns_decl}>
|
@@ -123,6 +137,7 @@ describe 'title fields (searchworks.rb)' do
|
|
123
137
|
expect(@smods_rec.sw_full_title).to eq 'The Olympics : a history?'
|
124
138
|
end
|
125
139
|
end # subtitle
|
140
|
+
|
126
141
|
context 'partName' do
|
127
142
|
context 'no partNumber' do
|
128
143
|
it 'end partName with period' do
|
@@ -162,6 +177,7 @@ describe 'title fields (searchworks.rb)' do
|
|
162
177
|
expect(@smods_rec.sw_full_title).to eq 'cfb. Appendix.'
|
163
178
|
end
|
164
179
|
end # no partNumber
|
180
|
+
|
165
181
|
context 'partNumber' do
|
166
182
|
it 'end partNumber with comma' do
|
167
183
|
m = "<mods #{@ns_decl}>
|
@@ -205,6 +221,7 @@ describe 'title fields (searchworks.rb)' do
|
|
205
221
|
end
|
206
222
|
end
|
207
223
|
end # partName
|
224
|
+
|
208
225
|
context 'no partName, but partNumber' do
|
209
226
|
it 'end partNumber with period' do
|
210
227
|
m = "<mods #{@ns_decl}>
|
@@ -322,6 +339,7 @@ describe 'title fields (searchworks.rb)' do
|
|
322
339
|
expect(@smods_rec.sw_title_display).to eq 'The Jerk'
|
323
340
|
end
|
324
341
|
end
|
342
|
+
|
325
343
|
context 'no subtitle' do
|
326
344
|
it 'end title with a period' do
|
327
345
|
m = "<mods #{@ns_decl}>
|
@@ -351,6 +369,7 @@ describe 'title fields (searchworks.rb)' do
|
|
351
369
|
expect(@smods_rec.sw_title_display).to eq 'The Olympics!'
|
352
370
|
end
|
353
371
|
end # no subtitle
|
372
|
+
|
354
373
|
context 'subtitle' do
|
355
374
|
it 'end title with a colon' do
|
356
375
|
m = "<mods #{@ns_decl}>
|
@@ -394,6 +413,7 @@ describe 'title fields (searchworks.rb)' do
|
|
394
413
|
expect(@smods_rec.sw_title_display).to eq 'The Olympics : a history?'
|
395
414
|
end
|
396
415
|
end # subtitle
|
416
|
+
|
397
417
|
context 'partName' do
|
398
418
|
context 'no partNumber' do
|
399
419
|
it 'end partName with period' do
|
@@ -433,6 +453,7 @@ describe 'title fields (searchworks.rb)' do
|
|
433
453
|
expect(@smods_rec.sw_title_display).to eq 'cfb. Appendix'
|
434
454
|
end
|
435
455
|
end # no partNumber
|
456
|
+
|
436
457
|
context 'partNumber' do
|
437
458
|
it 'end partNumber with comma' do
|
438
459
|
m = "<mods #{@ns_decl}>
|
@@ -476,6 +497,7 @@ describe 'title fields (searchworks.rb)' do
|
|
476
497
|
end
|
477
498
|
end
|
478
499
|
end # partName
|
500
|
+
|
479
501
|
context 'no partName, but partNumber' do
|
480
502
|
it 'end partNumber with period' do
|
481
503
|
m = "<mods #{@ns_decl}>
|
@@ -544,6 +566,7 @@ describe 'title fields (searchworks.rb)' do
|
|
544
566
|
@smods_rec.from_str(m)
|
545
567
|
@addl_titles = @smods_rec.sw_addl_titles
|
546
568
|
end
|
569
|
+
|
547
570
|
it 'should not include the main title' do
|
548
571
|
expect(@addl_titles.size).to eq 2
|
549
572
|
expect(@addl_titles).not_to include(@smods_rec.sw_full_title)
|
@@ -563,6 +586,18 @@ describe 'title fields (searchworks.rb)' do
|
|
563
586
|
@smods_rec.from_str(m)
|
564
587
|
expect(@smods_rec.sw_addl_titles).to eq ['Alternative', 'Joke]']
|
565
588
|
end
|
589
|
+
it 'excludes weird cases where there is no short title' do
|
590
|
+
m = <<-EOXML
|
591
|
+
<mods #{@ns_decl}>
|
592
|
+
<titleInfo></titleInfo>
|
593
|
+
<titleInfo type="alternative">
|
594
|
+
<title>Sponsored projects report for the year ended</title>
|
595
|
+
</titleInfo>
|
596
|
+
</mods>
|
597
|
+
EOXML
|
598
|
+
@smods_rec.from_str(m)
|
599
|
+
expect(@smods_rec.sw_addl_titles).to be_empty
|
600
|
+
end
|
566
601
|
end
|
567
602
|
|
568
603
|
context 'sort title' do
|
@@ -630,6 +665,7 @@ describe 'title fields (searchworks.rb)' do
|
|
630
665
|
</titleInfo></mods>"
|
631
666
|
@all_smods_rec.from_str(all)
|
632
667
|
end
|
668
|
+
|
633
669
|
it 'short titles' do
|
634
670
|
expect(@mccarthy_smods_rec.sw_short_title).to eql 'McCarthy, John'
|
635
671
|
expect(@insp_general_smods_rec.sw_short_title).to eql 'Semiannual report to Congress'
|
data/spec/spec_helper.rb
CHANGED
data/stanford-mods.gemspec
CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.test_files = gem.files.grep(%r{^spec/})
|
17
17
|
gem.require_paths = ["lib"]
|
18
18
|
|
19
|
-
gem.add_dependency 'mods', '~> 2.
|
19
|
+
gem.add_dependency 'mods', '~> 2.2'
|
20
20
|
# active_support for .ordinalize, eg. 1 -> 1st, 2 -> 2nd for centuries
|
21
21
|
gem.add_dependency 'activesupport'
|
22
22
|
|
@@ -27,4 +27,7 @@ Gem::Specification.new do |gem|
|
|
27
27
|
gem.add_development_dependency "yard"
|
28
28
|
# tests
|
29
29
|
gem.add_development_dependency 'rspec'
|
30
|
+
gem.add_development_dependency 'rubocop', '~> 0.60'
|
31
|
+
gem.add_development_dependency 'rubocop-rspec'
|
32
|
+
gem.add_development_dependency 'simplecov'
|
30
33
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stanford-mods
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naomi Dushay
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-07-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mods
|
@@ -17,20 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '2.
|
21
|
-
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 2.0.2
|
20
|
+
version: '2.2'
|
24
21
|
type: :runtime
|
25
22
|
prerelease: false
|
26
23
|
version_requirements: !ruby/object:Gem::Requirement
|
27
24
|
requirements:
|
28
25
|
- - "~>"
|
29
26
|
- !ruby/object:Gem::Version
|
30
|
-
version: '2.
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 2.0.2
|
27
|
+
version: '2.2'
|
34
28
|
- !ruby/object:Gem::Dependency
|
35
29
|
name: activesupport
|
36
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,6 +95,48 @@ dependencies:
|
|
101
95
|
- - ">="
|
102
96
|
- !ruby/object:Gem::Version
|
103
97
|
version: '0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: rubocop
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - "~>"
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0.60'
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - "~>"
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0.60'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: rubocop-rspec
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: simplecov
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
104
140
|
description: Stanford specific wrangling of MODS metadata from DOR, the Stanford Digital
|
105
141
|
Object Repository
|
106
142
|
email:
|
@@ -176,8 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
176
212
|
- !ruby/object:Gem::Version
|
177
213
|
version: '0'
|
178
214
|
requirements: []
|
179
|
-
|
180
|
-
rubygems_version: 2.6.11
|
215
|
+
rubygems_version: 3.1.2
|
181
216
|
signing_key:
|
182
217
|
specification_version: 4
|
183
218
|
summary: Stanford specific wrangling of MODS metadata
|