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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8804232f1ca85e31ad2a0bfa1bc63d4767cfdafa
|
4
|
+
data.tar.gz: 7d63e63050c095ad14acb31ca1398fd0bda7dd03
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb1ff057ca22ba94f107aeae436b855d7c31a2e0c21ba7153e408afb5855bbb0bec1f13b55ccc4e5223944c643774f47983dc37b8851614e503857f63da3b3c0
|
7
|
+
data.tar.gz: c399320ba5fe6dd4e39b2ea80aa67c59979dcd5911b495b8aee026b5ee144b16e011bc5dbdb64de5c143ea50cf0c2f0c532ee011a91d949cb22b2c0666cd08e1
|
@@ -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)
|
data/lib/cul_hydra/version.rb
CHANGED
data/lib/cul_hydra/version.rb~
CHANGED
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.
|
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-
|
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
|