stanford-mods 0.0.23 → 0.0.24

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OWYzOWJkOWZiZmE1YmIzZDQzY2UwM2ZmYjFkM2ZjM2QzMTQ1NjFhYg==
4
+ NmY1ZWQ2ZGMyNjZiYzZjY2M5MzE3ODYxNTliN2NkYTcyNGEyMTZjMQ==
5
5
  data.tar.gz: !binary |-
6
- ODhmMTJhNzAwMmIwNjhhYmM0ODk2OGIzNzMwZjM4NGQ1NTg4MTI5Yg==
7
- !binary "U0hBNTEy":
6
+ YjhmY2NkODk0M2Q5OGYzODNkZTQ5NmI4YTc0Y2QyNTBiYzQ1M2RiZg==
7
+ SHA512:
8
8
  metadata.gz: !binary |-
9
- NjA1YWI5ZGM2MzE4NjU2YmQ1YzYwYjhjZDcyMzg3Njk3YmVhMTRiMmI0ZTll
10
- MDdmMjU1ZDU2MGU3ZDg4NmMyN2I0MThlNDI1YTRjOGUzNmY0YWFjNWE4Zjg1
11
- MjViOTYzYTI2ZTBhZDE4OGJjNmZhOTAwNTMxZmIyNmYzNTBkNGI=
9
+ NzM5OTVjYTQ5ODg1NWMzMWMwMDY2YmY5ZTZiZjZlY2Y0NGI2OTYzNjllZWQ2
10
+ OGY4NWUxYmYwNGQzNTc1OTE3OTg4YTg3YjQzNDdiNTdmMjk0Nzg0ZDA5NDU1
11
+ MTY0NDI3YjE1OWQ4Yjc4YzY4N2Q4ZjhmZTgwZmJhZmY3Y2M5YmE=
12
12
  data.tar.gz: !binary |-
13
- ZmIyMjljNzEyMDZiZmE4Y2Q3NDM3NGExNDM1YTVmZGM1MzAzODcyZGEyNjNk
14
- NjdmMzJhYTQ4ZDNjNTJmNmNlOGM4ZWQ4MjE5ZDRjYjYxMTZiZWE5OTNlY2Fi
15
- ZGViMTgwNjhjZDE2ODY2NjY2M2VjODcyMmNlYWI3NzRhNzg4ZTU=
13
+ Yjg5YmFmYzY0MjU2YjM1ZjE5MjMwMGU1MTIyMDkzNmUxMjM1Mjk0MmFiNjdm
14
+ YTJmYmNkODczYTFjMTcyMTNhNmI4ZWI2OWY5YTdlZDcwZmYxNGU1MTYyZDgx
15
+ NzFmMjk5ODI5YzA4NWM0NTdiOTMxN2VkNjQ2MzYwOTEzZGVhZWU=
data/.gitignore CHANGED
@@ -4,6 +4,8 @@
4
4
  .config
5
5
  .yardoc
6
6
  .travis
7
+ .rvmrc
8
+ .ruby-version
7
9
  Gemfile.lock
8
10
  InstalledFiles
9
11
  _yardoc
data/.travis.yml CHANGED
@@ -1,11 +1,14 @@
1
1
  language: ruby
2
2
  script: rake rspec
3
3
  rvm:
4
+ - 2.1.0
4
5
  - 1.9.3
5
- - jruby-19mode
6
+ - ruby-head
7
+ - jruby-head
8
+ # - jruby-19mode
6
9
  notifications:
7
10
  email:
8
11
  - ndushay@stanford.edu
9
12
  - bess@stanford.edu
10
- before_install:
11
- gem update --system 1.8.24
13
+ #before_install:
14
+ # gem update --system 1.8.24
data/README.rdoc CHANGED
@@ -59,6 +59,7 @@ Example Using SearchWorks Mixins:
59
59
  6. Create new Pull Request
60
60
 
61
61
  == Releases
62
+ * <b>0.0.24</b> Largely cosmetic refactoring for easier maintenance.
62
63
  * <b>0.0.23</b> Added logic for dealing with "u-notation" approximate dates, e.g., 198u
63
64
  * <b>0.0.20</b> Added mapping for typeOfResource notated music
64
65
  * <b>0.0.19</b> Additional mappings, including Hydrus formats (GRYPHONDOR-207)
@@ -94,6 +94,28 @@ module Stanford
94
94
  val.gsub(/[[:punct:]]*/, '').strip
95
95
  end
96
96
 
97
+ def main_author_w_date_test
98
+ result = nil
99
+ first_wo_role = nil
100
+ self.plain_name.each { |n|
101
+ if n.role.size == 0
102
+ first_wo_role ||= n
103
+ end
104
+ n.role.each { |r|
105
+ if r.authority.include?('marcrelator') &&
106
+ (r.value.include?('Creator') || r.value.include?('Author'))
107
+ result ||= n.display_value_w_date
108
+ end
109
+ }
110
+ }
111
+ if !result && first_wo_role
112
+ result = first_wo_role.display_value_w_date
113
+ end
114
+ result
115
+ end
116
+
117
+ # ---- end AUTHOR ----
118
+
97
119
  # ---- TITLE ----
98
120
 
99
121
  # @return [String] value for title_245a_search field
@@ -123,6 +145,17 @@ module Stanford
123
145
  val.gsub(/[[:punct:]]*/, '').strip
124
146
  end
125
147
 
148
+ #remove trailing commas
149
+ def sw_full_title_without_commas
150
+ toret = self.sw_full_title
151
+ if toret
152
+ toret = toret.gsub(/,$/, '')
153
+ end
154
+ toret
155
+ end
156
+
157
+ # ---- end TITLE ----
158
+
126
159
  # ---- SUBJECT ----
127
160
 
128
161
  # Values are the contents of:
@@ -191,41 +224,38 @@ module Stanford
191
224
  vals.empty? ? nil : vals
192
225
  end
193
226
  end
194
- def place
195
- vals = self.term_values([:origin_info,:place,:placeTerm])
196
- vals
197
- end
198
- def main_author_w_date_test
199
- result = nil
200
- first_wo_role = nil
201
- self.plain_name.each { |n|
202
- if n.role.size == 0
203
- first_wo_role ||= n
204
- end
205
- n.role.each { |r|
206
- if r.authority.include?('marcrelator') &&
207
- (r.value.include?('Creator') || r.value.include?('Author'))
208
- result ||= n.display_value_w_date
209
- end
210
- }
227
+
228
+ # Values are the contents of:
229
+ # subject/topic
230
+ # subject/name
231
+ # subject/title
232
+ # subject/occupation
233
+ # with trailing comma, semicolon, and backslash (and any preceding spaces) removed
234
+ # @return [Array<String>] values for the topic_facet Solr field for this document or nil if none
235
+ def topic_facet
236
+ vals = subject_topics ? Array.new(subject_topics) : []
237
+ vals.concat(subject_names) if subject_names
238
+ vals.concat(subject_titles) if subject_titles
239
+ vals.concat(subject_occupations) if subject_occupations
240
+ vals.map! { |val|
241
+ v = val.sub(/[\\,;]$/, '')
242
+ v.strip
211
243
  }
212
- if !result && first_wo_role
213
- result = first_wo_role.display_value_w_date
214
- end
215
- result
244
+ vals.empty? ? nil : vals
216
245
  end
217
- #remove trailing commas
218
- def sw_full_title_without_commas
219
- toret = self.sw_full_title
220
- if toret
221
- toret = toret.gsub(/,$/, '')
222
- end
223
- toret
246
+
247
+ # geographic_search values with trailing comma, semicolon, and backslash (and any preceding spaces) removed
248
+ # @return [Array<String>] values for the geographic_facet Solr field for this document or nil if none
249
+ def geographic_facet
250
+ geographic_search.map { |val| val.sub(/[\\,;]$/, '').strip } unless !geographic_search
224
251
  end
225
252
 
226
- def sw_logger
227
- @logger ||= Logger.new(STDOUT)
253
+ # subject/temporal values with trailing comma, semicolon, and backslash (and any preceding spaces) removed
254
+ # @return [Array<String>] values for the era_facet Solr field for this document or nil if none
255
+ def era_facet
256
+ subject_temporal.map { |val| val.sub(/[\\,;]$/, '').strip } unless !subject_temporal
228
257
  end
258
+
229
259
  # Values are the contents of:
230
260
  # subject/geographic
231
261
  # subject/hierarchicalGeographic
@@ -285,7 +315,36 @@ module Stanford
285
315
  vals.empty? ? nil : vals
286
316
  end
287
317
  end
318
+
319
+ # Values are the contents of:
320
+ # all subject subelements except subject/cartographic plus genre top level element
321
+ # @return [Array<String>] values for the subject_all_search Solr field for this document or nil if none
322
+ def subject_all_search
323
+ vals = topic_search ? Array.new(topic_search) : []
324
+ vals.concat(geographic_search) if geographic_search
325
+ vals.concat(subject_other_search) if subject_other_search
326
+ vals.concat(subject_other_subvy_search) if subject_other_subvy_search
327
+ vals.empty? ? nil : vals
328
+ end
329
+
330
+ # ---- end SUBJECT ----
331
+
332
+ # ---- PUBLICATION (place, year) ----
333
+ def place
334
+ vals = self.term_values([:origin_info,:place,:placeTerm])
335
+ vals
336
+ end
337
+
338
+ def pub_date_display
339
+ if pub_dates
340
+ pub_dates.first
341
+ else
342
+ nil
343
+ end
344
+ end
345
+
288
346
  # @return [Array<String>] values for the pub_date_group_facet
347
+ # @deprecated
289
348
  def pub_date_groups year
290
349
  if not year
291
350
  return nil
@@ -312,72 +371,6 @@ module Stanford
312
371
  end
313
372
  end
314
373
 
315
- # select one or more format values from the controlled vocabulary here:
316
- # http://searchworks-solr-lb.stanford.edu:8983/solr/select?facet.field=format&rows=0&facet.sort=index
317
- # based on the dor_content_type
318
- # @return [String] value in the SearchWorks controlled vocabulary
319
- def format
320
- val=[]
321
- formats = self.term_values(:typeOfResource)
322
- genres = self.term_values(:genre)
323
- issuance = self.term_values([:origin_info,:issuance])
324
- if formats
325
- formats.each do |form|
326
- case form
327
- when 'text'
328
- val << 'Thesis' if genres and genres.include? 'thesis'
329
- val << 'Book' if issuance and issuance.include? 'monographic'
330
- val << 'Journal/Periodical' if issuance and issuance.include? 'continuing'
331
- val << 'Journal/Periodical' if genres and genres.include? 'article'
332
- val << 'Conference Proceedings' if genres and genres.include? 'conference publication'
333
- val << 'Other' if genres and genres.include? 'student project report'
334
- val << 'Book' if genres and genres.include? 'technical report'
335
- when 'still image'
336
- val << 'Image'
337
- when 'mixed material'
338
- val << 'Manuscript/Archive'
339
- when 'moving image'
340
- val << 'Video'
341
- when 'notated music'
342
- val << 'Music - Score'
343
- when 'three dimensional object'
344
- val <<'Other'
345
- when 'cartographic'
346
- val << 'Map/Globe'
347
- when 'sound recording-musical'
348
- val << 'Music-Recording'
349
- when 'sound recording-nonmusical'
350
- val << 'Sound Recording'
351
- when 'software, multimedia'
352
- val << 'Computer File'
353
- end
354
- end
355
- end
356
- if val.length>0
357
- return val.uniq
358
- end
359
- if not self.typeOfResource or self.typeOfResource.length == 0
360
- []
361
- end
362
- end
363
-
364
- # Values are the contents of:
365
- # all subject subelements except subject/cartographic plus genre top level element
366
- # @return [Array<String>] values for the subject_all_search Solr field for this document or nil if none
367
- def subject_all_search
368
- vals = topic_search ? Array.new(topic_search) : []
369
- vals.concat(geographic_search) if geographic_search
370
- vals.concat(subject_other_search) if subject_other_search
371
- vals.concat(subject_other_subvy_search) if subject_other_subvy_search
372
- vals.empty? ? nil : vals
373
- end
374
- def pub_date_display
375
- if pub_dates
376
- pub_dates.first
377
- else
378
- nil
379
- end
380
- end
381
374
  #get the dates from dateIssued, and dateCreated merged into 1 array.
382
375
  # @return [Array<String>] values for the issue_date_display Solr field for this document or nil if none
383
376
  def pub_dates
@@ -407,32 +400,33 @@ module Stanford
407
400
  end
408
401
  return @pub_year
409
402
  end
410
- dates=pub_dates
403
+ dates = pub_dates
411
404
  if dates
412
- year=[]
413
- pruned_dates=[]
405
+ year = []
406
+ pruned_dates = []
414
407
  dates.each do |f_date|
415
408
  #remove ? and []
416
409
  pruned_dates << f_date.gsub('?','').gsub('[','').gsub(']','')
417
410
  end
418
411
  #try to find a date starting with the most normal date formats and progressing to more wonky ones
419
- @pub_year=get_plain_four_digit_year pruned_dates
412
+ @pub_year = get_plain_four_digit_year pruned_dates
420
413
  return @pub_year if @pub_year
421
414
  # Check for years in u notation, e.g., 198u
422
- @pub_year=get_u_year pruned_dates
415
+ @pub_year = get_u_year pruned_dates
423
416
  return @pub_year if @pub_year
424
- @pub_year=get_double_digit_century pruned_dates
417
+ @pub_year = get_double_digit_century pruned_dates
425
418
  return @pub_year if @pub_year
426
- @pub_year=get_bc_year pruned_dates
419
+ @pub_year = get_bc_year pruned_dates
427
420
  return @pub_year if @pub_year
428
- @pub_year=get_three_digit_year pruned_dates
421
+ @pub_year = get_three_digit_year pruned_dates
429
422
  return @pub_year if @pub_year
430
- @pub_year=get_single_digit_century pruned_dates
423
+ @pub_year = get_single_digit_century pruned_dates
431
424
  return @pub_year if @pub_year
432
425
  end
433
426
  @pub_year=''
434
427
  return nil
435
428
  end
429
+
436
430
  #creates a date suitable for sorting. Guarnteed to be 4 digits or nil
437
431
  def pub_date_sort
438
432
  pd=nil
@@ -446,6 +440,7 @@ module Stanford
446
440
  raise "pub_date_sort was about to return a non 4 digit value #{pd}!" if pd and pd.length !=4
447
441
  pd
448
442
  end
443
+
449
444
  #The year the object was published, , filtered based on max_pub_date and min_pub_date from the config file
450
445
  #@return [String] 4 character year or nil
451
446
  def pub_date
@@ -455,6 +450,7 @@ module Stanford
455
450
  end
456
451
  nil
457
452
  end
453
+
458
454
  #Values for the pub date facet. This is less strict than the 4 year date requirements for pub_date
459
455
  #@return <Array[String]> with values for the pub date facet
460
456
  def pub_date_facet
@@ -475,37 +471,61 @@ module Stanford
475
471
  end
476
472
  end
477
473
 
474
+ # ---- end PUBLICATION (place, year) ----
478
475
 
479
- # Values are the contents of:
480
- # subject/topic
481
- # subject/name
482
- # subject/title
483
- # subject/occupation
484
- # with trailing comma, semicolon, and backslash (and any preceding spaces) removed
485
- # @return [Array<String>] values for the topic_facet Solr field for this document or nil if none
486
- def topic_facet
487
- vals = subject_topics ? Array.new(subject_topics) : []
488
- vals.concat(subject_names) if subject_names
489
- vals.concat(subject_titles) if subject_titles
490
- vals.concat(subject_occupations) if subject_occupations
491
- vals.map! { |val|
492
- v = val.sub(/[\\,;]$/, '')
493
- v.strip
494
- }
495
- vals.empty? ? nil : vals
476
+ def sw_logger
477
+ @logger ||= Logger.new(STDOUT)
496
478
  end
497
-
498
- # geographic_search values with trailing comma, semicolon, and backslash (and any preceding spaces) removed
499
- # @return [Array<String>] values for the geographic_facet Solr field for this document or nil if none
500
- def geographic_facet
501
- geographic_search.map { |val| val.sub(/[\\,;]$/, '').strip } unless !geographic_search
479
+
480
+ # select one or more format values from the controlled vocabulary here:
481
+ # http://searchworks-solr-lb.stanford.edu:8983/solr/select?facet.field=format&rows=0&facet.sort=index
482
+ # based on the dor_content_type
483
+ # @return [String] value in the SearchWorks controlled vocabulary
484
+ def format
485
+ val=[]
486
+ formats = self.term_values(:typeOfResource)
487
+ genres = self.term_values(:genre)
488
+ issuance = self.term_values([:origin_info,:issuance])
489
+ if formats
490
+ formats.each do |form|
491
+ case form
492
+ when 'text'
493
+ val << 'Thesis' if genres and genres.include? 'thesis'
494
+ val << 'Book' if issuance and issuance.include? 'monographic'
495
+ val << 'Journal/Periodical' if issuance and issuance.include? 'continuing'
496
+ val << 'Journal/Periodical' if genres and genres.include? 'article'
497
+ val << 'Conference Proceedings' if genres and genres.include? 'conference publication'
498
+ val << 'Other' if genres and genres.include? 'student project report'
499
+ val << 'Book' if genres and genres.include? 'technical report'
500
+ when 'still image'
501
+ val << 'Image'
502
+ when 'mixed material'
503
+ val << 'Manuscript/Archive'
504
+ when 'moving image'
505
+ val << 'Video'
506
+ when 'notated music'
507
+ val << 'Music - Score'
508
+ when 'three dimensional object'
509
+ val <<'Other'
510
+ when 'cartographic'
511
+ val << 'Map/Globe'
512
+ when 'sound recording-musical'
513
+ val << 'Music-Recording'
514
+ when 'sound recording-nonmusical'
515
+ val << 'Sound Recording'
516
+ when 'software, multimedia'
517
+ val << 'Computer File'
518
+ end
519
+ end
520
+ end
521
+ if val.length>0
522
+ return val.uniq
523
+ end
524
+ if not self.typeOfResource or self.typeOfResource.length == 0
525
+ []
526
+ end
502
527
  end
503
528
 
504
- # subject/temporal values with trailing comma, semicolon, and backslash (and any preceding spaces) removed
505
- # @return [Array<String>] values for the era_facet Solr field for this document or nil if none
506
- def era_facet
507
- subject_temporal.map { |val| val.sub(/[\\,;]$/, '').strip } unless !subject_temporal
508
- end
509
529
  # @return [String] value with the numeric catkey in it, or nil if none exists
510
530
  def catkey
511
531
  catkey=self.term_values([:record_info,:recordIdentifier])
@@ -521,7 +541,7 @@ module Stanford
521
541
  @druid ? @druid : 'Unknown item'
522
542
  end
523
543
 
524
- # protected ----------------------------------------------------------
544
+ # protected ----------------------------------------------------------
525
545
 
526
546
  # convenience method for subject/name/namePart values (to avoid parsing the mods for the same thing multiple times)
527
547
  def subject_names
@@ -573,17 +593,17 @@ module Stanford
573
593
  end
574
594
 
575
595
  # If a year has a "u" in it, replace instances of u with 0
576
- # @param [String]
596
+ # @param [String] dates
577
597
  # @return String
578
598
  def get_u_year dates
579
599
  dates.each do |f_date|
580
600
  # Single digit u notation
581
- matches=f_date.scan(/\d{3}u/)
601
+ matches = f_date.scan(/\d{3}u/)
582
602
  if matches.length == 1
583
603
  return matches.first.gsub('u','0')
584
604
  end
585
605
  # Double digit u notation
586
- matches=f_date.scan(/\d{2}u{2}/)
606
+ matches = f_date.scan(/\d{2}u{2}/)
587
607
  if matches.length == 1
588
608
  return matches.first.gsub('u','-')
589
609
  end