gdor-indexer 0.4.1 → 0.5.0
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 +4 -4
- data/.rubocop_todo.yml +6 -12
- data/gdor-indexer.gemspec +1 -1
- data/lib/gdor/indexer/mods_fields.rb +14 -37
- data/lib/gdor/indexer/version.rb +1 -1
- data/spec/unit/mods_pub_fields_spec.rb +160 -176
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4724a7e6363dc6d287c4bf1bf6033e000930bf90
|
4
|
+
data.tar.gz: 72fbd1746a114c918ebc9dd838f9674f7fddb8b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88b7024e0faf8b01d0091b6f53e1683d9f9fc9ba6602d4905d2078e682d7cdb284c95e63d362698ef22709961f313f002ec483dcad43f5f4e224149e6269d339
|
7
|
+
data.tar.gz: 8b9b76607dabc0f1409a66b37efb1fd0e07c8afc29a4c36d65a3f144b60b6b531afb3251512a97cd75a47164ce8b599cdf79a0d12fd795e2f85c8385983fbb21
|
data/.rubocop_todo.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on 2016-01-
|
3
|
+
# on 2016-01-13 15:12:03 -0800 using RuboCop version 0.34.2.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
@@ -24,7 +24,7 @@ Lint/UselessAssignment:
|
|
24
24
|
- 'spec/unit/indexer_spec.rb'
|
25
25
|
- 'spec/unit/solr_doc_builder_spec.rb'
|
26
26
|
|
27
|
-
# Offense count:
|
27
|
+
# Offense count: 21
|
28
28
|
Metrics/AbcSize:
|
29
29
|
Max: 82
|
30
30
|
|
@@ -37,12 +37,12 @@ Metrics/ClassLength:
|
|
37
37
|
Metrics/CyclomaticComplexity:
|
38
38
|
Max: 9
|
39
39
|
|
40
|
-
# Offense count:
|
40
|
+
# Offense count: 318
|
41
41
|
# Configuration parameters: AllowURI, URISchemes.
|
42
42
|
Metrics/LineLength:
|
43
43
|
Max: 258
|
44
44
|
|
45
|
-
# Offense count:
|
45
|
+
# Offense count: 15
|
46
46
|
# Configuration parameters: CountComments.
|
47
47
|
Metrics/MethodLength:
|
48
48
|
Max: 43
|
@@ -70,12 +70,6 @@ RSpec/InstanceVariable:
|
|
70
70
|
- 'spec/unit/public_xml_fields_spec.rb'
|
71
71
|
- 'spec/unit/solr_doc_builder_spec.rb'
|
72
72
|
|
73
|
-
# Offense count: 6
|
74
|
-
# Cop supports --auto-correct.
|
75
|
-
Style/AlignArray:
|
76
|
-
Exclude:
|
77
|
-
- 'lib/gdor/indexer/mods_fields.rb'
|
78
|
-
|
79
73
|
# Offense count: 7
|
80
74
|
# Cop supports --auto-correct.
|
81
75
|
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
@@ -106,7 +100,7 @@ Style/DoubleNegation:
|
|
106
100
|
Exclude:
|
107
101
|
- 'lib/gdor/indexer/solr_doc_hash.rb'
|
108
102
|
|
109
|
-
# Offense count:
|
103
|
+
# Offense count: 1
|
110
104
|
# Cop supports --auto-correct.
|
111
105
|
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
112
106
|
Style/EmptyLinesAroundBlockBody:
|
@@ -119,7 +113,7 @@ Style/GuardClause:
|
|
119
113
|
Exclude:
|
120
114
|
- 'lib/gdor/indexer.rb'
|
121
115
|
|
122
|
-
# Offense count:
|
116
|
+
# Offense count: 21
|
123
117
|
# Cop supports --auto-correct.
|
124
118
|
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
125
119
|
Style/MultilineOperationIndentation:
|
data/gdor-indexer.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.require_paths = ['lib']
|
19
19
|
|
20
20
|
spec.add_dependency 'harvestdor-indexer'
|
21
|
-
spec.add_dependency 'stanford-mods', '>= 1.
|
21
|
+
spec.add_dependency 'stanford-mods', '>= 1.4.0' # for new pub date methods
|
22
22
|
spec.add_dependency 'nokogiri'
|
23
23
|
spec.add_dependency 'rsolr'
|
24
24
|
spec.add_dependency 'activesupport'
|
@@ -4,7 +4,7 @@ module GDor::Indexer::ModsFields
|
|
4
4
|
# Create a Hash representing a Solr doc, with all MODS related fields populated.
|
5
5
|
# @return [Hash] Hash representing the Solr document
|
6
6
|
def doc_hash_from_mods
|
7
|
-
|
7
|
+
pub_year_w_approx_dates = smods_rec.pub_year_int(false)
|
8
8
|
doc_hash = {
|
9
9
|
# title fields
|
10
10
|
title_245a_search: smods_rec.sw_short_title,
|
@@ -46,22 +46,22 @@ module GDor::Indexer::ModsFields
|
|
46
46
|
|
47
47
|
# publication fields
|
48
48
|
pub_search: smods_rec.place,
|
49
|
-
|
50
|
-
#
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
# display fields
|
49
|
+
pub_year_isi: pub_year_w_approx_dates, # for sorting
|
50
|
+
# TODO: remove pub_date_sort after reindexing existing colls; deprecated in favor of pub_year_isi ...
|
51
|
+
pub_date_sort: smods_rec.pub_year_sort_str(false),
|
52
|
+
# these are for single value facet display (in leiu of date slider (pub_year_tisim) )
|
53
|
+
pub_year_no_approx_isi: smods_rec.pub_year_int(true),
|
54
|
+
pub_year_w_approx_isi: pub_year_w_approx_dates,
|
55
|
+
# display fields TODO: pub_date_display is deprecated; need better implementation of imprint_display
|
56
56
|
imprint_display: smods_rec.pub_date_display,
|
57
57
|
# pub_date_best_sort_str_value is protected ...
|
58
|
-
creation_year_isi: smods_rec.
|
59
|
-
publication_year_isi: smods_rec.
|
58
|
+
creation_year_isi: smods_rec.year_int(smods_rec.date_created_elements(false)),
|
59
|
+
publication_year_isi: smods_rec.year_int(smods_rec.date_issued_elements(false)),
|
60
60
|
|
61
61
|
all_search: smods_rec.text.gsub(/\s+/, ' ')
|
62
62
|
}
|
63
63
|
|
64
|
-
|
64
|
+
add_pub_year_tisim(doc_hash)
|
65
65
|
end
|
66
66
|
|
67
67
|
private
|
@@ -76,30 +76,13 @@ module GDor::Indexer::ModsFields
|
|
76
76
|
vals
|
77
77
|
end
|
78
78
|
|
79
|
-
#
|
79
|
+
# add pub_year_tisim (for Date Slider; positive values only) to doc_hash
|
80
80
|
# @param [Hash] Hash representing the Solr document
|
81
81
|
# @return [Hash] updated Hash representing the Solr document
|
82
|
-
def
|
83
|
-
pub_date_sort_val = doc_hash[:
|
82
|
+
def add_pub_year_tisim(doc_hash)
|
83
|
+
pub_date_sort_val = doc_hash[:pub_year_isi]
|
84
84
|
if is_positive_int? pub_date_sort_val
|
85
85
|
doc_hash[:pub_year_tisim] = pub_date_sort_val # for date slider
|
86
|
-
# remove leading zeros
|
87
|
-
[:pub_year_no_approx_isi,
|
88
|
-
:pub_year_w_approx_isi,
|
89
|
-
:creation_year_isi,
|
90
|
-
:publication_year_isi
|
91
|
-
].each do |field_sym|
|
92
|
-
doc_hash[field_sym] = remove_leading_zeros(doc_hash[field_sym]) if doc_hash[field_sym]
|
93
|
-
end
|
94
|
-
else
|
95
|
-
# turn B.C. into -yyy for facet/display fields
|
96
|
-
[:pub_year_no_approx_isi,
|
97
|
-
:pub_year_w_approx_isi,
|
98
|
-
:creation_year_isi,
|
99
|
-
:publication_year_isi
|
100
|
-
].each do |field_sym|
|
101
|
-
doc_hash[field_sym] = '-' + (1000 + doc_hash[field_sym].to_i).to_s if doc_hash[field_sym]
|
102
|
-
end
|
103
86
|
end
|
104
87
|
doc_hash
|
105
88
|
end
|
@@ -110,10 +93,4 @@ module GDor::Indexer::ModsFields
|
|
110
93
|
rescue
|
111
94
|
false
|
112
95
|
end
|
113
|
-
|
114
|
-
def remove_leading_zeros(year_sort_str)
|
115
|
-
return '0' if year_sort_str == '0000'
|
116
|
-
return year_sort_str.sub(/^[0:]*/, '') if year_sort_str.start_with?('0')
|
117
|
-
year_sort_str
|
118
|
-
end
|
119
96
|
end
|
data/lib/gdor/indexer/version.rb
CHANGED
@@ -23,7 +23,7 @@ describe GDor::Indexer::ModsFields do
|
|
23
23
|
|
24
24
|
context 'publication date fields' do
|
25
25
|
|
26
|
-
RSpec.shared_examples 'expected' do |solr_field_sym, mods_field_val, exp_val|
|
26
|
+
RSpec.shared_examples 'expected (dateIssued)' do |solr_field_sym, mods_field_val, exp_val|
|
27
27
|
it "#{exp_val} for #{mods_field_val}" do
|
28
28
|
m = mods_origin_info_start_str +
|
29
29
|
"<dateIssued>#{mods_field_val}</dateIssued>" +
|
@@ -33,51 +33,57 @@ describe GDor::Indexer::ModsFields do
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
RSpec.shared_examples 'pub year int (dateIssued)' do |solr_field_sym|
|
37
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, '1945', 1945
|
38
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, '945', 945
|
39
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, '66', 66
|
40
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, '5', 5
|
41
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, '0', 0
|
42
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, 'blah blah 1945 blah blah', 1945
|
43
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, '16--', 1600
|
44
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, '9--', 900
|
45
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, '19th century', 1800
|
46
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, '9th century', 800
|
47
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, 'blah June 4, 1594; blah 1596', 1594
|
48
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, 'Aug. 3rd, 1886', 1886
|
49
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, 'Aug. 3rd, [18]86? foo bar', 1886
|
50
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, 'early 1890s', 1890
|
51
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, '1865-6', 1865
|
52
|
+
end
|
53
|
+
RSpec.shared_examples 'pub year int (dateIssued) for B.C. years' do |solr_field_sym|
|
54
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, '-4', -4
|
55
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, '-15', -15
|
56
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, '-666', -666
|
57
|
+
it_behaves_like 'expected (dateIssued)', solr_field_sym, '300 B.C.', -300
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'pub_year_isi' do
|
61
|
+
it 'calls Stanford::Mods::Record instance pub_year_int(false)' do
|
62
|
+
expect(sdb.smods_rec).to receive(:pub_year_int).with(false)
|
63
|
+
allow(sdb.smods_rec).to receive(:pub_year_int).with(true) # pub_year_no_approx_isi
|
64
|
+
sdb.doc_hash_from_mods[:pub_year_isi]
|
40
65
|
end
|
41
66
|
it 'includes approx dates' do
|
42
67
|
m = mods_origin_info_start_str +
|
43
68
|
"<dateIssued qualifier='approximate'>1945</dateIssued>" +
|
44
69
|
mods_origin_info_end_str
|
45
70
|
sdb = sdb_for_mods(m)
|
46
|
-
expect(sdb.doc_hash_from_mods[:
|
71
|
+
expect(sdb.doc_hash_from_mods[:pub_year_isi]).to eq 1945
|
47
72
|
end
|
48
|
-
it '
|
73
|
+
it 'will use dateCreated' do
|
49
74
|
m = mods_origin_info_start_str +
|
50
75
|
"<dateCreated>1904</dateCreated>" +
|
51
76
|
mods_origin_info_end_str
|
52
77
|
sdb = sdb_for_mods(m)
|
53
|
-
expect(sdb.doc_hash_from_mods[:
|
78
|
+
expect(sdb.doc_hash_from_mods[:pub_year_isi]).to eq 1904
|
54
79
|
end
|
55
|
-
it_behaves_like '
|
56
|
-
it_behaves_like '
|
57
|
-
it_behaves_like 'expected', :pub_date, '945', '945'
|
58
|
-
it_behaves_like 'expected', :pub_date, '66', nil
|
59
|
-
it_behaves_like 'expected', :pub_date, '5', nil
|
60
|
-
it_behaves_like 'expected', :pub_date, '0', nil
|
61
|
-
it_behaves_like 'expected', :pub_date, '-4', nil
|
62
|
-
it_behaves_like 'expected', :pub_date, '-15', nil
|
63
|
-
it_behaves_like 'expected', :pub_date, '-666', '666' # WRONG
|
64
|
-
it_behaves_like 'expected', :pub_date, '16--', nil
|
65
|
-
it_behaves_like 'expected', :pub_date, '8--', nil
|
66
|
-
it_behaves_like 'expected', :pub_date, '19th century', '19th century'
|
67
|
-
it_behaves_like 'expected', :pub_date, '9th century', '9th century'
|
68
|
-
it_behaves_like 'expected', :pub_date, '300 B.C.', '300 B.C.'
|
69
|
-
it_behaves_like 'expected', :pub_date, 'Text dated June 4, 1594; miniatures added by 1596', '1594'
|
70
|
-
it_behaves_like 'expected', :pub_date, 'Aug. 3rd, 1886', '1886'
|
71
|
-
it_behaves_like 'expected', :pub_date, 'Aug. 3rd, [18]86?', '1886'
|
72
|
-
it_behaves_like 'expected', :pub_date, 'early 1890s', '1890'
|
73
|
-
it_behaves_like 'expected', :pub_date, '1865-6', '1865'
|
74
|
-
|
80
|
+
it_behaves_like 'pub year int (dateIssued)', :pub_year_isi
|
81
|
+
it_behaves_like 'pub year int (dateIssued) for B.C. years', :pub_year_isi
|
75
82
|
end
|
76
83
|
|
77
|
-
context 'pub_date_sort' do
|
78
|
-
it 'calls Stanford::Mods::Record instance
|
79
|
-
expect(sdb.smods_rec).to receive(:
|
80
|
-
allow(sdb.smods_rec).to receive(:pub_date_sortable_string).with(true) # for pub_year_no_approx_isi
|
84
|
+
context 'pub_date_sort (DEPRECATED in favor of pub_year_isi)' do
|
85
|
+
it 'calls Stanford::Mods::Record instance pub_year_sort_str(false)' do
|
86
|
+
expect(sdb.smods_rec).to receive(:pub_year_sort_str).with(false)
|
81
87
|
sdb.doc_hash_from_mods[:pub_date_sort]
|
82
88
|
end
|
83
89
|
it 'includes approx dates' do
|
@@ -94,74 +100,88 @@ describe GDor::Indexer::ModsFields do
|
|
94
100
|
sdb = sdb_for_mods(m)
|
95
101
|
expect(sdb.doc_hash_from_mods[:pub_date_sort]).to eq('1904')
|
96
102
|
end
|
97
|
-
it_behaves_like 'expected', :pub_date_sort, '1945', '1945'
|
98
|
-
it_behaves_like 'expected', :pub_date_sort, '945', '0945'
|
99
|
-
it_behaves_like 'expected', :pub_date_sort, '66', '0066'
|
100
|
-
it_behaves_like 'expected', :pub_date_sort, '5', '0005'
|
101
|
-
it_behaves_like 'expected', :pub_date_sort, '0', '0000'
|
103
|
+
it_behaves_like 'expected (dateIssued)', :pub_date_sort, '1945', '1945'
|
104
|
+
it_behaves_like 'expected (dateIssued)', :pub_date_sort, '945', '0945'
|
105
|
+
it_behaves_like 'expected (dateIssued)', :pub_date_sort, '66', '0066'
|
106
|
+
it_behaves_like 'expected (dateIssued)', :pub_date_sort, '5', '0005'
|
107
|
+
it_behaves_like 'expected (dateIssued)', :pub_date_sort, '0', '0000'
|
108
|
+
it_behaves_like 'expected (dateIssued)', :pub_date_sort, '16--', '1600'
|
109
|
+
it_behaves_like 'expected (dateIssued)', :pub_date_sort, '9--', '0900'
|
110
|
+
it_behaves_like 'expected (dateIssued)', :pub_date_sort, '19th century', '1800'
|
111
|
+
it_behaves_like 'expected (dateIssued)', :pub_date_sort, '9th century', '0800'
|
102
112
|
# these negative values are for String lexical sorting as this is a string
|
103
|
-
it_behaves_like 'expected', :pub_date_sort, '-4', '-996'
|
104
|
-
it_behaves_like 'expected', :pub_date_sort, '-15', '-985'
|
105
|
-
it_behaves_like 'expected', :pub_date_sort, '-666', '-334'
|
106
|
-
it_behaves_like 'expected', :pub_date_sort, '16--', '1600'
|
107
|
-
it_behaves_like 'expected', :pub_date_sort, '9--', '0900'
|
108
|
-
it_behaves_like 'expected', :pub_date_sort, '19th century', '1800'
|
109
|
-
it_behaves_like 'expected', :pub_date_sort, '9th century', '0800'
|
110
113
|
# -(1000 - |yyy|) for BC dates
|
111
|
-
it_behaves_like 'expected', :pub_date_sort, '
|
114
|
+
it_behaves_like 'expected (dateIssued)', :pub_date_sort, '-4', '-996'
|
115
|
+
it_behaves_like 'expected (dateIssued)', :pub_date_sort, '-15', '-985'
|
116
|
+
it_behaves_like 'expected (dateIssued)', :pub_date_sort, '-666', '-334'
|
117
|
+
it_behaves_like 'expected (dateIssued)', :pub_date_sort, '300 B.C.', '-700'
|
112
118
|
end
|
113
119
|
|
114
|
-
context '
|
115
|
-
|
116
|
-
mods_origin_info_start_str +
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
+
context 'pub_year_no_approx_isi' do
|
121
|
+
it 'does not include approx dates' do
|
122
|
+
m = mods_origin_info_start_str +
|
123
|
+
"<dateIssued qualifier='approximate'>1945</dateIssued>" +
|
124
|
+
mods_origin_info_end_str
|
125
|
+
sdb = sdb_for_mods(m)
|
126
|
+
expect(sdb.doc_hash_from_mods[:pub_year_no_approx_isi]).to eq nil
|
120
127
|
end
|
121
|
-
it '
|
128
|
+
it 'calls Stanford::Mods::Record instance pub_year_int(true)' do
|
129
|
+
mods = mods_origin_info_start_str +
|
130
|
+
"<dateIssued qualifier=\"approximate\">1500</dateIssued>
|
131
|
+
<dateIssued>2000</dateIssued>" +
|
132
|
+
mods_origin_info_end_str
|
122
133
|
sdb = sdb_for_mods(mods)
|
123
|
-
expect(sdb.smods_rec).to receive(:
|
124
|
-
allow(sdb.smods_rec).to receive(:
|
125
|
-
expect(sdb.doc_hash_from_mods[:pub_year_no_approx_isi]).to eq
|
134
|
+
expect(sdb.smods_rec).to receive(:pub_year_int).with(true).and_call_original
|
135
|
+
allow(sdb.smods_rec).to receive(:pub_year_int).with(false) # for other flavor
|
136
|
+
expect(sdb.doc_hash_from_mods[:pub_year_no_approx_isi]).to eq 2000
|
137
|
+
end
|
138
|
+
it 'will use dateCreated' do
|
139
|
+
m = mods_origin_info_start_str +
|
140
|
+
"<dateCreated>1904</dateCreated>" +
|
141
|
+
mods_origin_info_end_str
|
142
|
+
sdb = sdb_for_mods(m)
|
143
|
+
expect(sdb.doc_hash_from_mods[:pub_year_no_approx_isi]).to eq 1904
|
126
144
|
end
|
127
|
-
|
145
|
+
it_behaves_like 'pub year int (dateIssued)', :pub_year_no_approx_isi
|
146
|
+
it_behaves_like 'pub year int (dateIssued) for B.C. years', :pub_year_no_approx_isi
|
147
|
+
end
|
148
|
+
|
149
|
+
context 'pub_year_w_approx_isi' do
|
150
|
+
it 'includes approx dates' do
|
151
|
+
m = mods_origin_info_start_str +
|
152
|
+
"<dateIssued qualifier='approximate'>1945</dateIssued>" +
|
153
|
+
mods_origin_info_end_str
|
154
|
+
sdb = sdb_for_mods(m)
|
155
|
+
expect(sdb.doc_hash_from_mods[:pub_year_w_approx_isi]).to eq 1945
|
156
|
+
end
|
157
|
+
it 'calls Stanford::Mods::Record instance pub_year_int(false)' do
|
158
|
+
mods = mods_origin_info_start_str +
|
159
|
+
"<dateIssued qualifier=\"approximate\">1500</dateIssued>
|
160
|
+
<dateIssued>2000</dateIssued>" +
|
161
|
+
mods_origin_info_end_str
|
128
162
|
sdb = sdb_for_mods(mods)
|
129
|
-
expect(sdb.smods_rec).to receive(:
|
130
|
-
allow(sdb.smods_rec).to receive(:
|
131
|
-
expect(sdb.doc_hash_from_mods[:pub_year_w_approx_isi]).to eq
|
163
|
+
expect(sdb.smods_rec).to receive(:pub_year_int).with(false).and_call_original
|
164
|
+
allow(sdb.smods_rec).to receive(:pub_year_int).with(true) # for other flavor
|
165
|
+
expect(sdb.doc_hash_from_mods[:pub_year_w_approx_isi]).to eq 1500
|
132
166
|
end
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
it_behaves_like 'expected', field_sym, '0', '0'
|
140
|
-
it_behaves_like 'expected', field_sym, '-4', '-4'
|
141
|
-
it_behaves_like 'expected', field_sym, '-15', '-15'
|
142
|
-
it_behaves_like 'expected', field_sym, '-666', '-666'
|
143
|
-
it_behaves_like 'expected', field_sym, '16--', '1600'
|
144
|
-
it_behaves_like 'expected', field_sym, '8--', '800'
|
145
|
-
it_behaves_like 'expected', field_sym, '19th century', '1800'
|
146
|
-
it_behaves_like 'expected', field_sym, '9th century', '800'
|
147
|
-
it_behaves_like 'expected', field_sym, '300 B.C.', '-300'
|
148
|
-
it_behaves_like 'expected', field_sym, 'Text dated June 4, 1594; miniatures added by 1596', '1594'
|
149
|
-
it_behaves_like 'expected', field_sym, 'Aug. 3rd, 1886', '1886'
|
150
|
-
it_behaves_like 'expected', field_sym, 'Aug. 3rd, [18]86?', '1886'
|
151
|
-
it_behaves_like 'expected', field_sym, 'early 1890s', '1890'
|
152
|
-
it_behaves_like 'expected', field_sym, '1865-6', '1865'
|
167
|
+
it 'will use dateCreated' do
|
168
|
+
m = mods_origin_info_start_str +
|
169
|
+
"<dateCreated>1904</dateCreated>" +
|
170
|
+
mods_origin_info_end_str
|
171
|
+
sdb = sdb_for_mods(m)
|
172
|
+
expect(sdb.doc_hash_from_mods[:pub_year_w_approx_isi]).to eq 1904
|
153
173
|
end
|
154
|
-
it_behaves_like
|
155
|
-
it_behaves_like
|
174
|
+
it_behaves_like 'pub year int (dateIssued)', :pub_year_w_approx_isi
|
175
|
+
it_behaves_like 'pub year int (dateIssued) for B.C. years', :pub_year_w_approx_isi
|
156
176
|
end
|
157
177
|
|
158
178
|
context 'pub_year_tisim for date slider' do
|
159
179
|
it 'should handle multiple pub dates (to be implemented - esp for date slider)'
|
160
180
|
|
161
181
|
# FIXME: it should be using a method approp for date slider values, not single value
|
162
|
-
it 'pub_year_tisim calls Stanford::Mods::Record instance
|
163
|
-
expect(sdb.smods_rec).to receive(:
|
164
|
-
allow(sdb.smods_rec).to receive(:
|
182
|
+
it 'pub_year_tisim calls Stanford::Mods::Record instance pub_year_int(false)' do
|
183
|
+
expect(sdb.smods_rec).to receive(:pub_year_int).with(false)
|
184
|
+
allow(sdb.smods_rec).to receive(:pub_year_int).with(true) # for pub_year_no_approx_isi
|
165
185
|
sdb.doc_hash_from_mods[:pub_year_tisim]
|
166
186
|
end
|
167
187
|
it 'includes approx dates' do
|
@@ -169,53 +189,36 @@ describe GDor::Indexer::ModsFields do
|
|
169
189
|
"<dateIssued qualifier='approximate'>1945</dateIssued>" +
|
170
190
|
mods_origin_info_end_str
|
171
191
|
sdb = sdb_for_mods(m)
|
172
|
-
expect(sdb.doc_hash_from_mods[:pub_year_tisim]).to eq
|
192
|
+
expect(sdb.doc_hash_from_mods[:pub_year_tisim]).to eq 1945
|
173
193
|
end
|
174
|
-
it '
|
194
|
+
it 'will use dateCreated' do
|
175
195
|
m = mods_origin_info_start_str +
|
176
196
|
"<dateCreated>1904</dateCreated>" +
|
177
197
|
mods_origin_info_end_str
|
178
198
|
sdb = sdb_for_mods(m)
|
179
|
-
expect(sdb.doc_hash_from_mods[:pub_year_tisim]).to eq
|
180
|
-
end
|
181
|
-
it 'ignores B.C. dates' do
|
182
|
-
m = mods_origin_info_start_str +
|
183
|
-
"<dateCreated>300 B.C.</dateCreated>" +
|
184
|
-
mods_origin_info_end_str
|
185
|
-
sdb = sdb_for_mods(m)
|
186
|
-
expect(sdb.doc_hash_from_mods).not_to have_key(:pub_year_tisim)
|
187
|
-
expect(sdb.doc_hash_from_mods[:pub_year_tisim]).to be_nil
|
199
|
+
expect(sdb.doc_hash_from_mods[:pub_year_tisim]).to eq 1904
|
188
200
|
end
|
189
|
-
it_behaves_like '
|
190
|
-
|
191
|
-
it_behaves_like 'expected', :pub_year_tisim, '
|
192
|
-
it_behaves_like 'expected', :pub_year_tisim, '
|
193
|
-
it_behaves_like 'expected', :pub_year_tisim, '
|
194
|
-
it_behaves_like 'expected', :pub_year_tisim, '
|
195
|
-
it_behaves_like 'expected', :pub_year_tisim, '
|
196
|
-
it_behaves_like 'expected', :pub_year_tisim, '-
|
197
|
-
it_behaves_like 'expected', :pub_year_tisim, '16--', '1600'
|
198
|
-
it_behaves_like 'expected', :pub_year_tisim, '9--', '0900'
|
199
|
-
it_behaves_like 'expected', :pub_year_tisim, '19th century', '1800'
|
200
|
-
it_behaves_like 'expected', :pub_year_tisim, '9th century', '0800'
|
201
|
-
it_behaves_like 'expected', :pub_year_tisim, 'Text dated June 4, 1594; miniatures added by 1596', '1594'
|
202
|
-
it_behaves_like 'expected', :pub_year_tisim, 'Aug. 3rd, 1886', '1886'
|
203
|
-
it_behaves_like 'expected', :pub_year_tisim, 'Aug. 3rd, [18]86?', '1886'
|
204
|
-
it_behaves_like 'expected', :pub_year_tisim, 'early 1890s', '1890'
|
205
|
-
it_behaves_like 'expected', :pub_year_tisim, '1865-6', '1865' # FIXME: should be both years
|
201
|
+
it_behaves_like 'pub year int (dateIssued)', :pub_year_tisim
|
202
|
+
# nil for years before 0
|
203
|
+
it_behaves_like 'expected (dateIssued)', :pub_year_tisim, '-4', nil
|
204
|
+
it_behaves_like 'expected (dateIssued)', :pub_year_tisim, '-15', nil
|
205
|
+
it_behaves_like 'expected (dateIssued)', :pub_year_tisim, '-666', nil
|
206
|
+
it_behaves_like 'expected (dateIssued)', :pub_year_tisim, '300 B.C.', nil
|
207
|
+
it_behaves_like 'expected (dateIssued)', :pub_year_tisim, 'blah June 4, 1594; blah 1596', 1594 # FIXME: should be both years
|
208
|
+
it_behaves_like 'expected (dateIssued)', :pub_year_tisim, '1865-6', 1865 # FIXME: should be both years
|
206
209
|
end
|
207
210
|
|
208
211
|
context 'creation_year_isi' do
|
209
|
-
it 'creation_year_isi calls Stanford::Mods::Record
|
212
|
+
it 'creation_year_isi calls Stanford::Mods::Record year_int for dateCreated elements' do
|
210
213
|
m = mods_origin_info_start_str +
|
211
214
|
"<dateCreated qualifier='approximate'>1500</dateCreated>
|
212
215
|
<dateIssued qualifier='approximate'>2000</dateIssued>" +
|
213
216
|
mods_origin_info_end_str
|
214
217
|
sdb = sdb_for_mods(m)
|
215
|
-
expect(sdb.smods_rec).to receive(:
|
216
|
-
expect(sdb.doc_hash_from_mods[:creation_year_isi]).to eq
|
218
|
+
expect(sdb.smods_rec).to receive(:year_int).at_least(2).times.and_call_original
|
219
|
+
expect(sdb.doc_hash_from_mods[:creation_year_isi]).to eq 1500
|
217
220
|
end
|
218
|
-
RSpec.shared_examples 'expected
|
221
|
+
RSpec.shared_examples 'expected (dateCreated)' do |mods_field_val, exp_val|
|
219
222
|
it "#{exp_val} for #{mods_field_val}" do
|
220
223
|
m = mods_origin_info_start_str +
|
221
224
|
"<dateCreated>#{mods_field_val}</dateCreated>" +
|
@@ -224,58 +227,39 @@ describe GDor::Indexer::ModsFields do
|
|
224
227
|
expect(sdb.doc_hash_from_mods[:creation_year_isi]).to eq exp_val
|
225
228
|
end
|
226
229
|
end
|
227
|
-
it_behaves_like 'expected
|
228
|
-
|
229
|
-
it_behaves_like 'expected
|
230
|
-
it_behaves_like 'expected
|
231
|
-
it_behaves_like 'expected
|
232
|
-
it_behaves_like 'expected
|
233
|
-
it_behaves_like 'expected
|
234
|
-
it_behaves_like 'expected
|
235
|
-
it_behaves_like 'expected
|
236
|
-
it_behaves_like 'expected
|
237
|
-
it_behaves_like 'expected
|
238
|
-
it_behaves_like 'expected
|
239
|
-
it_behaves_like 'expected
|
240
|
-
it_behaves_like 'expected
|
241
|
-
it_behaves_like 'expected
|
242
|
-
it_behaves_like 'expected
|
243
|
-
it_behaves_like 'expected
|
244
|
-
it_behaves_like 'expected
|
245
|
-
|
246
|
-
it_behaves_like 'expected for dateCreated', '300 B.C.', '-300'
|
230
|
+
it_behaves_like 'expected (dateCreated)', '1945', 1945
|
231
|
+
it_behaves_like 'expected (dateCreated)', '945', 945
|
232
|
+
it_behaves_like 'expected (dateCreated)', '66', 66
|
233
|
+
it_behaves_like 'expected (dateCreated)', '5', 5
|
234
|
+
it_behaves_like 'expected (dateCreated)', '0', 0
|
235
|
+
it_behaves_like 'expected (dateCreated)', '16--', 1600
|
236
|
+
it_behaves_like 'expected (dateCreated)', '9--', 900
|
237
|
+
it_behaves_like 'expected (dateCreated)', 'blah blah 1945 blah blah', 1945
|
238
|
+
it_behaves_like 'expected (dateCreated)', '19th century', 1800
|
239
|
+
it_behaves_like 'expected (dateCreated)', '9th century', 800
|
240
|
+
it_behaves_like 'expected (dateCreated)', 'blah June 4, 1594; blah 1596', 1594
|
241
|
+
it_behaves_like 'expected (dateCreated)', 'Aug. 3rd, 1886', 1886
|
242
|
+
it_behaves_like 'expected (dateCreated)', 'Aug. 3rd, [18]86? foo bar', 1886
|
243
|
+
it_behaves_like 'expected (dateCreated)', 'early 1890s', 1890
|
244
|
+
it_behaves_like 'expected (dateCreated)', '1865-6', 1865
|
245
|
+
it_behaves_like 'expected (dateCreated)', '-4', -4
|
246
|
+
it_behaves_like 'expected (dateCreated)', '-15', -15
|
247
|
+
it_behaves_like 'expected (dateCreated)', '-666', -666
|
248
|
+
it_behaves_like 'expected (dateCreated)', '300 B.C.', -300
|
247
249
|
end
|
248
250
|
|
249
251
|
context 'publication_year_isi' do
|
250
|
-
it 'publication_year_isi calls Stanford::Mods::Record
|
252
|
+
it 'publication_year_isi calls Stanford::Mods::Record year_int for dateIssued elements' do
|
251
253
|
m = mods_origin_info_start_str +
|
252
254
|
"<dateCreated qualifier='approximate'>1500</dateCreated>
|
253
255
|
<dateIssued qualifier='approximate'>2000</dateIssued>" +
|
254
256
|
mods_origin_info_end_str
|
255
257
|
sdb = sdb_for_mods(m)
|
256
|
-
expect(sdb.smods_rec).to receive(:
|
257
|
-
expect(sdb.doc_hash_from_mods[:publication_year_isi]).to eq
|
258
|
+
expect(sdb.smods_rec).to receive(:year_int).at_least(2).times.and_call_original
|
259
|
+
expect(sdb.doc_hash_from_mods[:publication_year_isi]).to eq 2000
|
258
260
|
end
|
259
|
-
it_behaves_like '
|
260
|
-
|
261
|
-
it_behaves_like 'expected', :publication_year_isi, '945', '945'
|
262
|
-
it_behaves_like 'expected', :publication_year_isi, '66', '66'
|
263
|
-
it_behaves_like 'expected', :publication_year_isi, '5', '5'
|
264
|
-
it_behaves_like 'expected', :publication_year_isi, '0', '0'
|
265
|
-
it_behaves_like 'expected', :publication_year_isi, '-4', '-4'
|
266
|
-
it_behaves_like 'expected', :publication_year_isi, '-15', '-15'
|
267
|
-
it_behaves_like 'expected', :publication_year_isi, '-666', '-666'
|
268
|
-
it_behaves_like 'expected', :publication_year_isi, '16--', '1600'
|
269
|
-
it_behaves_like 'expected', :publication_year_isi, '9--', '900'
|
270
|
-
it_behaves_like 'expected', :publication_year_isi, '19th century', '1800'
|
271
|
-
it_behaves_like 'expected', :publication_year_isi, '9th century', '800'
|
272
|
-
it_behaves_like 'expected', :publication_year_isi, 'blah June 4, 1594; blah 1596', '1594'
|
273
|
-
it_behaves_like 'expected', :publication_year_isi, 'Aug. 3rd, 1886', '1886'
|
274
|
-
it_behaves_like 'expected', :publication_year_isi, 'Aug. 3rd, [18]86?', '1886'
|
275
|
-
it_behaves_like 'expected', :publication_year_isi, 'early 1890s', '1890'
|
276
|
-
it_behaves_like 'expected', :publication_year_isi, '1865-6', '1865'
|
277
|
-
# note: B.C. becomes a regular negative number
|
278
|
-
it_behaves_like 'expected', :publication_year_isi, '300 B.C.', '-300'
|
261
|
+
it_behaves_like 'pub year int (dateIssued)', :publication_year_isi
|
262
|
+
it_behaves_like 'pub year int (dateIssued) for B.C. years', :publication_year_isi
|
279
263
|
end
|
280
264
|
end # publication date fields
|
281
265
|
|
@@ -285,22 +269,22 @@ describe GDor::Indexer::ModsFields do
|
|
285
269
|
expect(sdb.smods_rec).to receive(:pub_date_display)
|
286
270
|
sdb.doc_hash_from_mods[:imprint_display]
|
287
271
|
end
|
288
|
-
it_behaves_like 'expected', :imprint_display, '1945', '1945'
|
289
|
-
it_behaves_like 'expected', :imprint_display, '945', '945'
|
290
|
-
it_behaves_like 'expected', :imprint_display, '66', '66'
|
291
|
-
it_behaves_like 'expected', :imprint_display, '5', '5'
|
292
|
-
it_behaves_like 'expected', :imprint_display, '0', '0'
|
293
|
-
it_behaves_like 'expected', :imprint_display, '-4', '-4'
|
294
|
-
it_behaves_like 'expected', :imprint_display, '-15', '-15'
|
295
|
-
it_behaves_like 'expected', :imprint_display, '-666', '-666'
|
296
|
-
it_behaves_like 'expected', :imprint_display, '16--', '16--'
|
297
|
-
it_behaves_like 'expected', :imprint_display, '9--', '9--'
|
298
|
-
it_behaves_like 'expected', :imprint_display, '19th century', '19th century'
|
299
|
-
it_behaves_like 'expected', :imprint_display, '9th century', '9th century'
|
300
|
-
it_behaves_like 'expected', :imprint_display, 'blah June 4, 1594; blah 1596', 'blah June 4, 1594; blah 1596'
|
301
|
-
it_behaves_like 'expected', :imprint_display, 'Aug. 3rd, 1886', 'Aug. 3rd, 1886'
|
302
|
-
it_behaves_like 'expected', :imprint_display, 'Aug. 3rd, [18]86?', 'Aug. 3rd, [18]86?'
|
303
|
-
it_behaves_like 'expected', :imprint_display, 'early 1890s', 'early 1890s'
|
304
|
-
it_behaves_like 'expected', :imprint_display, '1865-6', '1865-6'
|
272
|
+
it_behaves_like 'expected (dateIssued)', :imprint_display, '1945', '1945'
|
273
|
+
it_behaves_like 'expected (dateIssued)', :imprint_display, '945', '945'
|
274
|
+
it_behaves_like 'expected (dateIssued)', :imprint_display, '66', '66'
|
275
|
+
it_behaves_like 'expected (dateIssued)', :imprint_display, '5', '5'
|
276
|
+
it_behaves_like 'expected (dateIssued)', :imprint_display, '0', '0'
|
277
|
+
it_behaves_like 'expected (dateIssued)', :imprint_display, '-4', '-4'
|
278
|
+
it_behaves_like 'expected (dateIssued)', :imprint_display, '-15', '-15'
|
279
|
+
it_behaves_like 'expected (dateIssued)', :imprint_display, '-666', '-666'
|
280
|
+
it_behaves_like 'expected (dateIssued)', :imprint_display, '16--', '16--'
|
281
|
+
it_behaves_like 'expected (dateIssued)', :imprint_display, '9--', '9--'
|
282
|
+
it_behaves_like 'expected (dateIssued)', :imprint_display, '19th century', '19th century'
|
283
|
+
it_behaves_like 'expected (dateIssued)', :imprint_display, '9th century', '9th century'
|
284
|
+
it_behaves_like 'expected (dateIssued)', :imprint_display, 'blah June 4, 1594; blah 1596', 'blah June 4, 1594; blah 1596'
|
285
|
+
it_behaves_like 'expected (dateIssued)', :imprint_display, 'Aug. 3rd, 1886', 'Aug. 3rd, 1886'
|
286
|
+
it_behaves_like 'expected (dateIssued)', :imprint_display, 'Aug. 3rd, [18]86?', 'Aug. 3rd, [18]86?'
|
287
|
+
it_behaves_like 'expected (dateIssued)', :imprint_display, 'early 1890s', 'early 1890s'
|
288
|
+
it_behaves_like 'expected (dateIssued)', :imprint_display, '1865-6', '1865-6'
|
305
289
|
end
|
306
290
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gdor-indexer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naomi Dushay
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-01-
|
13
|
+
date: 2016-01-19 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: harvestdor-indexer
|
@@ -32,14 +32,14 @@ dependencies:
|
|
32
32
|
requirements:
|
33
33
|
- - ">="
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: 1.
|
35
|
+
version: 1.4.0
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 1.
|
42
|
+
version: 1.4.0
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: nokogiri
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|