cul_hydra 1.4.15 → 1.4.16

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 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