cul_hydra 1.4.15 → 1.4.16

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6c7a0b734caa1f463ecaefb6fd21eb9c3620bd8f
4
- data.tar.gz: e56b97041f0505cec8405836314f95a1dea93d92
3
+ metadata.gz: 8804232f1ca85e31ad2a0bfa1bc63d4767cfdafa
4
+ data.tar.gz: 7d63e63050c095ad14acb31ca1398fd0bda7dd03
5
5
  SHA512:
6
- metadata.gz: cd12ae40650e82e2ca0127041fc2c9653342ae65f6cb3ac300626846d6320e980ae2dbacfdd0e2ba10955b68cdee12cda8c28f7b2e011dd1a2a94e188535da06
7
- data.tar.gz: 4588a63073b3b4da6d77033a500b822fd007d1a5234de9549a6fb52a8102a9ec30c29dede3aa260b72176a2f61620a1483120ceb08b020a909c1d163cff783fe
6
+ metadata.gz: bb1ff057ca22ba94f107aeae436b855d7c31a2e0c21ba7153e408afb5855bbb0bec1f13b55ccc4e5223944c643774f47983dc37b8851614e503857f63da3b3c0
7
+ data.tar.gz: c399320ba5fe6dd4e39b2ea80aa67c59979dcd5911b495b8aee026b5ee144b16e011bc5dbdb64de5c143ea50cf0c2f0c532ee011a91d949cb22b2c0666cd08e1
@@ -45,6 +45,7 @@
45
45
  <namePart type="date">1829-1745</namePart>
46
46
  <role>
47
47
  <roleTerm authority="marcrelator" type="code">rcp</roleTerm>
48
+ <roleTerm authority="marcrelator" type="text">Addressee</roleTerm>
48
49
  </role>
49
50
  </name>
50
51
  <name>
@@ -12,6 +12,10 @@
12
12
  <namePart type="date">1829-1745</namePart>
13
13
  <role>
14
14
  <roleTerm authority="marcrelator" type="code">rcp</roleTerm>
15
+ <roleTerm authority="marcrelator" type="text">Addressee</roleTerm>
16
+ </role>
17
+ <role>
18
+ <roleTerm type="text">Owner/Agent</roleTerm>
15
19
  </role>
16
20
  </name>
17
21
  <name>
@@ -27,6 +31,7 @@
27
31
  <namePart>"Dear Brother"</namePart>
28
32
  <role>
29
33
  <roleTerm authority="marcrelator" type="code">rcp</roleTerm>
34
+ <roleTerm authority="marcrelator" type="text">Addressee</roleTerm>
30
35
  </role>
31
36
  </name>
32
37
  <name usage="primary">
@@ -22,6 +22,7 @@ module Cul::Hydra::Solrizer
22
22
  def maps_field?(field_key)
23
23
  value_mapper.maps_field? field_key
24
24
  end
25
+
25
26
  def normalize(t, strip_punctuation=false)
26
27
  # strip whitespace
27
28
  n_t = t.dup.strip
@@ -45,6 +46,11 @@ module Cul::Hydra::Solrizer
45
46
  end
46
47
  n_t
47
48
  end
49
+
50
+ def role_text_to_solr_field_name(role_text)
51
+ role_text = normalize(role_text, false)
52
+ ('role_' + role_text.gsub(/[^A-z]/, '_').downcase + '_ssim').gsub(/_+/, '_')
53
+ end
48
54
  end
49
55
 
50
56
  extend ClassMethods
@@ -382,6 +388,28 @@ module Cul::Hydra::Solrizer
382
388
  coordinate_values
383
389
  end
384
390
 
391
+ def add_names_by_text_role!(solr_doc)
392
+ # Note: These roles usually come from http://www.loc.gov/marc/relators/relaterm.html,
393
+ # but there are known cases when non-marc relator values are used (e.g. 'Owner/Agent'),
394
+ # and those roles won't have marcrelator codes.
395
+ # e.g. author_ssim = ['Author 1', 'Author 2'] or project_director_ssim = ['Director 1', 'Director 2']
396
+ roleterm_xpath_segment = "mods:roleTerm[@type='text' and string-length(text()) > 0]"
397
+ names_with_roles_xpath = "./mods:name/mods:role/#{roleterm_xpath_segment}/ancestor::mods:name"
398
+ mods.xpath(names_with_roles_xpath, MODS_NS).collect do |node|
399
+ name_text = node.xpath('./mods:namePart', MODS_NS).collect { |c| c.text }.join(' ')
400
+ name_text = ModsFieldable.normalize(name_text, true)
401
+ solr_role_fields = Set.new
402
+ node.xpath("./mods:role/#{roleterm_xpath_segment}", MODS_NS).collect do |role_node|
403
+ solr_role_fields << ModsFieldable.role_text_to_solr_field_name(role_node.text)
404
+ end
405
+
406
+ solr_role_fields.each do |solr_field_name|
407
+ solr_doc[solr_field_name] ||= []
408
+ solr_doc[solr_field_name] << name_text
409
+ end
410
+ end
411
+ end
412
+
385
413
  def to_solr(solr_doc={})
386
414
  solr_doc = (defined? super) ? super : solr_doc
387
415
 
@@ -499,6 +527,9 @@ module Cul::Hydra::Solrizer
499
527
  solr_doc['language_language_term_code_ssim'] ||= []
500
528
  solr_doc['language_language_term_code_ssim'] +=languages_iso639_2_code
501
529
 
530
+ # Add names to role-derived keys
531
+ add_names_by_text_role!(solr_doc)
532
+
502
533
  solr_doc.each do |k, v|
503
534
  if self.class.maps_field? k
504
535
  solr_doc[k] = self.class.map_value(k, v)
@@ -1,6 +1,6 @@
1
1
  module Cul
2
2
  module Hydra
3
- VERSION = '1.4.15'
3
+ VERSION = '1.4.16'
4
4
  def self.version
5
5
  VERSION
6
6
  end
@@ -1,6 +1,6 @@
1
1
  module Cul
2
2
  module Hydra
3
- VERSION = '1.4.14'
3
+ VERSION = '1.4.15'
4
4
  def self.version
5
5
  VERSION
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cul_hydra
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.15
4
+ version: 1.4.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Armintor
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-04-24 00:00:00.000000000 Z
12
+ date: 2018-05-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: blacklight
@@ -211,14 +211,14 @@ dependencies:
211
211
  name: rubydora
212
212
  requirement: !ruby/object:Gem::Requirement
213
213
  requirements:
214
- - - "<="
214
+ - - "~>"
215
215
  - !ruby/object:Gem::Version
216
216
  version: 2.0.0
217
217
  type: :runtime
218
218
  prerelease: false
219
219
  version_requirements: !ruby/object:Gem::Requirement
220
220
  requirements:
221
- - - "<="
221
+ - - "~>"
222
222
  - !ruby/object:Gem::Version
223
223
  version: 2.0.0
224
224
  - !ruby/object:Gem::Dependency