stanford-mods 1.0.3 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +4 -2
- data/README.rdoc +1 -0
- data/lib/stanford-mods/searchworks.rb +45 -42
- data/lib/stanford-mods/version.rb +1 -1
- data/spec/searchworks_pub_dates_spec.rb +11 -28
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00674c31e1fc276d254e80b69d023dc5791b8f6c
|
4
|
+
data.tar.gz: d5448fb18520caaae0020e836acb26ae25ffee1c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9aaa70cf1f63dd16c7a52f029f926f494802a29640e01c53c522bb99e761c1db06fd90809d9c1a962a3470bdc83f13b4e2d05f57162b61d981d65c272132b99
|
7
|
+
data.tar.gz: 275f10f95d7e7037db5309d8c79384e1d7f52ca47d407d0846219ff8c905eec5023a7013ae1f745c3b416533a28912fa3e870fb6e1919560a57244dc452b09c8
|
data/.travis.yml
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
language: ruby
|
2
2
|
script: rake rspec
|
3
3
|
rvm:
|
4
|
-
- 2.
|
4
|
+
- 2.2.0
|
5
|
+
- 2.1.5
|
5
6
|
- 2.0.0
|
6
7
|
- 1.9.3
|
7
8
|
- ruby-head
|
8
|
-
- jruby-
|
9
|
+
- jruby-1.7.9-d19 # fails after 1.7.10 for some reason
|
10
|
+
# - jruby-19mode # JRuby in 1.9 mode
|
9
11
|
# - jruby-head # failing 2014-07
|
10
12
|
notifications:
|
11
13
|
email:
|
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>1.1.0</b> Changed mechanism for determining dates for display only and for indexing, sorting, and faceting and removed deprecated pub_date_group method
|
62
63
|
* <b>1.0.3</b> format_main value 'Article' is now 'Book'
|
63
64
|
* <b>1.0.2</b> add format_main and sw_genre tests to searchworks.rb
|
64
65
|
* <b>1.0.1</b> sw_title_display keeps appropriate trailing punct more or less per spec in solrmarc-sw sw_index.properties
|
@@ -383,52 +383,22 @@ module Stanford
|
|
383
383
|
vals
|
384
384
|
end
|
385
385
|
|
386
|
+
# For the date display only, the first place to look is in the dates without encoding=marc array.
|
387
|
+
# If no such dates, select the first date in the pub_dates array. Otherwise return nil
|
388
|
+
# @return [String] value for the pub_date_display Solr field for this document or nil if none
|
386
389
|
def pub_date_display
|
387
|
-
|
388
|
-
pub_dates.first
|
389
|
-
else
|
390
|
-
nil
|
391
|
-
end
|
392
|
-
end
|
393
|
-
|
394
|
-
# @return [Array<String>] values for the pub_date_group_facet
|
395
|
-
# @deprecated
|
396
|
-
def pub_date_groups year
|
397
|
-
if not year
|
390
|
+
return dates_no_marc_encoding.first unless dates_no_marc_encoding.empty?
|
391
|
+
return pub_dates.first unless pub_dates.empty?
|
398
392
|
return nil
|
399
|
-
end
|
400
|
-
year=year.to_i
|
401
|
-
current_year=Time.new.year.to_i
|
402
|
-
result = []
|
403
|
-
if year >= current_year - 1
|
404
|
-
result << "This year"
|
405
|
-
else
|
406
|
-
if year >= current_year - 3
|
407
|
-
result << "Last 3 years"
|
408
|
-
else
|
409
|
-
if year >= current_year - 10
|
410
|
-
result << "Last 10 years"
|
411
|
-
else
|
412
|
-
if year >= current_year - 50
|
413
|
-
result << "Last 50 years"
|
414
|
-
else
|
415
|
-
result << "More than 50 years ago"
|
416
|
-
end
|
417
|
-
end
|
418
|
-
end
|
419
|
-
end
|
420
393
|
end
|
421
394
|
|
422
|
-
#
|
423
|
-
#
|
395
|
+
# For the date indexing, sorting and faceting, the first place to look is in the dates with encoding=marc array.
|
396
|
+
# If that doesn't exist, look in the dates without encoding=marc array. Otherwise return nil
|
397
|
+
# @return [Array<String>] values for the date Solr field for this document or nil if none
|
424
398
|
def pub_dates
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
else
|
429
|
-
vals = self.term_values([:origin_info,:dateCreated])
|
430
|
-
end
|
431
|
-
vals and vals.empty? ? nil : vals
|
399
|
+
return dates_marc_encoding unless dates_marc_encoding.empty?
|
400
|
+
return dates_no_marc_encoding unless dates_no_marc_encoding.empty?
|
401
|
+
return nil
|
432
402
|
end
|
433
403
|
|
434
404
|
def is_number?(object)
|
@@ -813,7 +783,40 @@ module Stanford
|
|
813
783
|
end
|
814
784
|
end
|
815
785
|
return nil
|
816
|
-
end
|
786
|
+
end
|
787
|
+
|
788
|
+
# @return [Array<String>] dates from dateIssued and dateCreated tags from origin_info with encoding="marc"
|
789
|
+
def dates_marc_encoding
|
790
|
+
split_date_encodings unless @dates_marc_encoding
|
791
|
+
return @dates_marc_encoding
|
792
|
+
end
|
793
|
+
|
794
|
+
# @return [Array<String>] dates from dateIssued and dateCreated tags from origin_info with encoding not "marc"
|
795
|
+
def dates_no_marc_encoding
|
796
|
+
split_date_encodings unless @dates_no_marc_encoding
|
797
|
+
return @dates_no_marc_encoding
|
798
|
+
end
|
799
|
+
|
800
|
+
# Populate @dates_marc_encoding and @dates_no_marc_encoding from dateIssued and dateCreated tags from origin_info
|
801
|
+
# with and without encoding=marc
|
802
|
+
def split_date_encodings
|
803
|
+
@dates_marc_encoding = []
|
804
|
+
@dates_no_marc_encoding = []
|
805
|
+
self.origin_info.dateIssued.each { |di|
|
806
|
+
if di.encoding == "marc"
|
807
|
+
@dates_marc_encoding << di.text
|
808
|
+
else
|
809
|
+
@dates_no_marc_encoding << di.text
|
810
|
+
end
|
811
|
+
}
|
812
|
+
self.origin_info.dateCreated.each { |dc|
|
813
|
+
if dc.encoding == "marc"
|
814
|
+
@dates_marc_encoding << dc.text
|
815
|
+
else
|
816
|
+
@dates_no_marc_encoding << dc.text
|
817
|
+
end
|
818
|
+
}
|
819
|
+
end
|
817
820
|
end # class Record
|
818
821
|
end # Module Mods
|
819
822
|
end # Module Stanford
|
@@ -122,6 +122,16 @@ describe "Date methods (searchworks.rb)" do
|
|
122
122
|
@smods_rec.pub_date_sort.should =='0800'
|
123
123
|
@smods_rec.pub_date_facet.should == '9th century'
|
124
124
|
end
|
125
|
+
it 'should use the dateIssued without marc encoding for pub_date_display and the one with marc encoding for indexing, sorting and faceting' do
|
126
|
+
m = "<mods #{@ns_decl}><originInfo><dateIssued>[186-?]</dateIssued><dateIssued encoding=\"marc\">1860</dateIssued><issuance>monographic</issuance></originInfo>"
|
127
|
+
@smods_rec = Stanford::Mods::Record.new
|
128
|
+
@smods_rec.from_str(m)
|
129
|
+
|
130
|
+
@smods_rec.pub_date_display.should == '[186-?]'
|
131
|
+
@smods_rec.pub_date.should =='1860'
|
132
|
+
@smods_rec.pub_date_sort.should =='1860'
|
133
|
+
@smods_rec.pub_date_facet.should == '1860'
|
134
|
+
end
|
125
135
|
end # pub_date
|
126
136
|
|
127
137
|
context "dates with u notation (198u, 19uu)" do
|
@@ -204,31 +214,4 @@ describe "Date methods (searchworks.rb)" do
|
|
204
214
|
end
|
205
215
|
end
|
206
216
|
|
207
|
-
|
208
|
-
it 'should generate the groups' do
|
209
|
-
m = "<mods #{@ns_decl}><originInfo>
|
210
|
-
<dateCreated>1904</dateCreated>
|
211
|
-
</originInfo></mods>"
|
212
|
-
@smods_rec = Stanford::Mods::Record.new
|
213
|
-
@smods_rec.from_str(m)
|
214
|
-
@smods_rec.pub_date_groups(1904).should == ['More than 50 years ago']
|
215
|
-
end
|
216
|
-
it 'should work for a modern date too' do
|
217
|
-
m = "<mods #{@ns_decl}><originInfo>
|
218
|
-
<dateCreated>1904</dateCreated>
|
219
|
-
</originInfo></mods>"
|
220
|
-
@smods_rec = Stanford::Mods::Record.new
|
221
|
-
@smods_rec.from_str(m)
|
222
|
-
@smods_rec.pub_date_groups(2013).should == ["This year"]
|
223
|
-
end
|
224
|
-
it 'should work ok given a nil date' do
|
225
|
-
m = "<mods #{@ns_decl}><originInfo>
|
226
|
-
<dateCreated>1904</dateCreated>
|
227
|
-
</originInfo></mods>"
|
228
|
-
@smods_rec = Stanford::Mods::Record.new
|
229
|
-
@smods_rec.from_str(m)
|
230
|
-
@smods_rec.pub_date_groups(nil).should == nil
|
231
|
-
end
|
232
|
-
end #context pub date groups
|
233
|
-
|
234
|
-
end
|
217
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stanford-mods
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naomi Dushay
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2015-01-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mods
|
@@ -133,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
133
|
version: '0'
|
134
134
|
requirements: []
|
135
135
|
rubyforge_project:
|
136
|
-
rubygems_version: 2.
|
136
|
+
rubygems_version: 2.4.3
|
137
137
|
signing_key:
|
138
138
|
specification_version: 4
|
139
139
|
summary: Stanford specific wrangling of MODS metadata
|