stanford-mods 1.1.4 → 1.1.5
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/README.md +91 -0
- data/Rakefile +2 -3
- data/lib/stanford-mods/searchworks.rb +2 -2
- data/lib/stanford-mods/version.rb +1 -1
- data/spec/searchworks_pub_dates_spec.rb +5 -17
- data/spec/searchworks_subject_spec.rb +3 -2
- data/spec/searchworks_title_spec.rb +74 -71
- data/stanford-mods.gemspec +1 -1
- metadata +5 -5
- data/README.rdoc +0 -85
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 209b8e1644beeed8c28948b1acdba20b7d63a414
|
4
|
+
data.tar.gz: d3f4b45f2d6f990c3084a67e4eca651a83ecd7e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00b048ecb711ea342bb7071bf5422f06c48f40bf81b7b67590211d9eb0a59774d28991396dfc1c0aa54c7cbe354407183fbd87f28c318517c0a7d08c12bceca4
|
7
|
+
data.tar.gz: a9b70f9cf519fae69b9e557281b156913735d465e83044ab6286caafeac0ca5ce2dde623cbdac58d91522e547041c175c602f5cb3cd39b5b68aed38fcc3ba772
|
data/README.md
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
# Stanford::Mods
|
2
|
+
|
3
|
+
[<img
|
4
|
+
src="https://secure.travis-ci.org/sul-dlss/stanford-mods.png?branch=master" alt="Build Status"/>](http://travis-ci.org/sul-dlss/stanford-mods) [<img
|
5
|
+
src="https://coveralls.io/repos/sul-dlss/stanford-mods/badge.png" alt="Coverage Status"/>](https://coveralls.io/r/sul-dlss/stanford-mods) [<img
|
6
|
+
src="https://gemnasium.com/sul-dlss/stanford-mods.png" alt="Dependency Status"/>](https://gemnasium.com/sul-dlss/stanford-mods) [<img
|
7
|
+
src="https://badge.fury.io/rb/stanford-mods.svg" alt="Gem Version"/>](http://badge.fury.io/rb/stanford-mods)
|
8
|
+
|
9
|
+
A Gem with Stanford specific wranglings of MODS (Metadata Object Description Schema)
|
10
|
+
metadata from DOR, the Stanford Digital Object Repository.
|
11
|
+
|
12
|
+
Source code at [github](https://github.com/sul-dlss/stanford-mods/).
|
13
|
+
|
14
|
+
Generated API docs at [rubydoc.info](http://rubydoc.info/github/sul-dlss/stanford-mods/).
|
15
|
+
|
16
|
+
## Installation
|
17
|
+
|
18
|
+
Add this line to your application's Gemfile:
|
19
|
+
|
20
|
+
gem 'stanford-mods'
|
21
|
+
|
22
|
+
And then execute:
|
23
|
+
|
24
|
+
$ bundle
|
25
|
+
|
26
|
+
Or install it yourself as:
|
27
|
+
|
28
|
+
$ gem install stanford-mods
|
29
|
+
|
30
|
+
## Usage
|
31
|
+
|
32
|
+
1. add stanford-mods to your gemfile
|
33
|
+
2.
|
34
|
+
```ruby
|
35
|
+
require 'stanford-mods'
|
36
|
+
m = Stanford::Mods::Record.new
|
37
|
+
m.from_str('<mods><genre>ape</genre></mods>')
|
38
|
+
m.genre # <Nokogiri::XML::Element:0x3fe07b48bb24 name="genre" children=[#<Nokogiri::XML::Text:0x3fe07a09a7dc "ape">]>
|
39
|
+
m.genre.text # "ape"
|
40
|
+
```
|
41
|
+
|
42
|
+
Example Using SearchWorks Mixins:
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
require 'stanford-mods/searchworks'
|
46
|
+
m = Stanford::Mods::Record.new
|
47
|
+
m.from_str('<mods><language><languageTerm authority="iso639-2b" type="code">dut</languageTerm></language></mods>')
|
48
|
+
m.language_facet # ['Dutch'], from Searchworks mixin
|
49
|
+
m.languages # ['Dutch; Flemish'] from mods gem
|
50
|
+
```
|
51
|
+
|
52
|
+
## Contributing
|
53
|
+
|
54
|
+
1. Fork it
|
55
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
56
|
+
3. Write code and tests.
|
57
|
+
4. Commit your changes (`git commit -am 'Added some feature'`)
|
58
|
+
5. Push to the branch (`git push origin my-new-feature`)
|
59
|
+
6. Create new Pull Request
|
60
|
+
|
61
|
+
## Releases
|
62
|
+
* **1.1.2** Corrected java `Character.MAX_CODE_POINT` value from u{FFFF} to u{10FFFF}
|
63
|
+
* **1.1.1** Minor bug fixes
|
64
|
+
* **1.1.0** Changed mechanism for determining dates for display only and for
|
65
|
+
indexing, sorting, and faceting and removed deprecated pub_date_group method
|
66
|
+
* **1.0.3** `format_main` value 'Article' is now 'Book'
|
67
|
+
* **1.0.2** add `format_main` and `sw_genre` tests to searchworks.rb
|
68
|
+
* **1.0.1** `sw_title_display` keeps appropriate trailing punct more or less per spec in solrmarc-sw `sw_index.properties`
|
69
|
+
* **1.0.0** `sw_full_title` now includes partName and partNumber;
|
70
|
+
`sw_title_display` created to be like `sw_full_title` but without trailing punctuation; sw format for typeOfResource sound recording; genre value is
|
71
|
+
librettos, plural; sw format algorithm accommodates first letter upcase; genre value report does NOT map to a format, genre value 'project report'
|
72
|
+
with ToR text is 'Book'
|
73
|
+
* **0.0.27** add genres 'Issue brief', 'Book chapter' and 'Working paper' to map to searchworks format 'Book'
|
74
|
+
* **0.0.26** map typeOfResource 'sound recording-musical' to searchworks format 'Music - Recording' with spaces
|
75
|
+
* **0.0.25** map typeOfResource 'text' and genre 'report' to searchworks format 'Book'
|
76
|
+
* **0.0.24** Largely cosmetic refactoring for easier maintenance.
|
77
|
+
* **0.0.23** Added logic for dealing with "u-notation" approximate dates, e.g., 198u
|
78
|
+
* **0.0.20** Added mapping for typeOfResource notated music
|
79
|
+
* **0.0.19** Additional mappings, including Hydrus formats (GRYPHONDOR-207)
|
80
|
+
* **0.0.11** escape regex special characters when using short title in a regex
|
81
|
+
* **0.0.10** get rid of `ignore_me` files
|
82
|
+
* **0.0.9** add `sw_subject_names` and `sw_subject_titles` methods to searchworks mixin
|
83
|
+
* **0.0.8** require stanford-mods/searchworks in stanford-mods (top level)
|
84
|
+
* **0.0.7** added `sw_geographic_search` to searchworks mixin
|
85
|
+
* **0.0.6** various title methods added to searchworks mixin
|
86
|
+
* **0.0.5** `main_author_w_date`, `additional_authors_w_dates` added to Stanford::Mods::Record; various author methods added to searchworks mixin
|
87
|
+
* **0.0.4** KolbRecord started
|
88
|
+
* **0.0.3** began SearchWorks mixins with `sw_access_facet` and `sw_language_facet`
|
89
|
+
* **0.0.2** add usage instructions to README
|
90
|
+
* **0.0.1** Initial commit - grab name
|
91
|
+
|
data/Rakefile
CHANGED
@@ -32,8 +32,8 @@ begin
|
|
32
32
|
|
33
33
|
YARD::Rake::YardocTask.new(:doc) do |yt|
|
34
34
|
yt.files = Dir.glob(File.join(project_root, 'lib', '**', '*.rb')) +
|
35
|
-
[ File.join(project_root, 'README.
|
36
|
-
yt.options = ['--output-dir', doc_dest_dir, '--readme', 'README.
|
35
|
+
[ File.join(project_root, 'README.md') ]
|
36
|
+
yt.options = ['--output-dir', doc_dest_dir, '--readme', 'README.md', '--title', 'Stanford-Mods Documentation']
|
37
37
|
end
|
38
38
|
rescue LoadError
|
39
39
|
desc "Generate YARD Documentation"
|
@@ -41,4 +41,3 @@ rescue LoadError
|
|
41
41
|
abort "Please install the YARD gem to generate rdoc."
|
42
42
|
end
|
43
43
|
end
|
44
|
-
|
@@ -191,7 +191,7 @@ module Stanford
|
|
191
191
|
end
|
192
192
|
|
193
193
|
val = '' + ( sw_full_title ? sw_full_title : '')
|
194
|
-
val.sub!(Regexp.new("^" + nonSort), '') if nonSort
|
194
|
+
val.sub!(Regexp.new("^" + Regexp.escape(nonSort)), '') if nonSort
|
195
195
|
val.gsub!(/[[:punct:]]*/, '').strip
|
196
196
|
val.squeeze(" ").strip
|
197
197
|
end
|
@@ -425,7 +425,7 @@ module Stanford
|
|
425
425
|
year = []
|
426
426
|
pruned_dates = []
|
427
427
|
dates.each do |f_date|
|
428
|
-
#remove ? and []
|
428
|
+
#remove ? and []
|
429
429
|
if (f_date.length == 4 && f_date.end_with?('?'))
|
430
430
|
pruned_dates << f_date.gsub('?','0')
|
431
431
|
else
|
@@ -4,7 +4,6 @@ require 'spec_helper'
|
|
4
4
|
describe "Date methods (searchworks.rb)" do
|
5
5
|
|
6
6
|
before(:all) do
|
7
|
-
@smods_rec = Stanford::Mods::Record.new
|
8
7
|
@ns_decl = "xmlns='#{Mods::MODS_NS}'"
|
9
8
|
end
|
10
9
|
|
@@ -22,11 +21,14 @@ describe "Date methods (searchworks.rb)" do
|
|
22
21
|
end
|
23
22
|
|
24
23
|
context "pub_date" do
|
24
|
+
before :each do
|
25
|
+
@smods_rec = Stanford::Mods::Record.new
|
26
|
+
end
|
27
|
+
|
25
28
|
it "should choose the first date" do
|
26
29
|
m = "<mods #{@ns_decl}><originInfo>
|
27
30
|
<dateCreated>1904</dateCreated>
|
28
31
|
</originInfo></mods>"
|
29
|
-
@smods_rec = Stanford::Mods::Record.new
|
30
32
|
@smods_rec.from_str(m)
|
31
33
|
expect(@smods_rec.pub_date).to eq('1904')
|
32
34
|
end
|
@@ -34,7 +36,6 @@ describe "Date methods (searchworks.rb)" do
|
|
34
36
|
m = "<mods #{@ns_decl}><originInfo>
|
35
37
|
<dateCreated>Aug. 3rd, 1886</dateCreated>
|
36
38
|
</originInfo></mods>"
|
37
|
-
@smods_rec = Stanford::Mods::Record.new
|
38
39
|
@smods_rec.from_str(m)
|
39
40
|
expect(@smods_rec.pub_date).to eq('1886')
|
40
41
|
end
|
@@ -42,7 +43,6 @@ describe "Date methods (searchworks.rb)" do
|
|
42
43
|
m = "<mods #{@ns_decl}><originInfo>
|
43
44
|
<dateCreated>Aug. 3rd, [18]86?</dateCreated>
|
44
45
|
</originInfo></mods>"
|
45
|
-
@smods_rec = Stanford::Mods::Record.new
|
46
46
|
@smods_rec.from_str(m)
|
47
47
|
expect(@smods_rec.pub_date).to eq('1886')
|
48
48
|
end
|
@@ -50,31 +50,26 @@ describe "Date methods (searchworks.rb)" do
|
|
50
50
|
m = "<mods #{@ns_decl}><originInfo>
|
51
51
|
<dateCreated>early 1890s</dateCreated>
|
52
52
|
</originInfo></mods>"
|
53
|
-
@smods_rec = Stanford::Mods::Record.new
|
54
53
|
@smods_rec.from_str(m)
|
55
54
|
expect(@smods_rec.pub_date).to eq('1890')
|
56
55
|
end
|
57
56
|
it 'should choose a date ending with CE if there are multiple dates' do
|
58
57
|
m = "<mods #{@ns_decl}><originInfo><dateIssued>7192 AM (li-Adam) / 1684 CE</dateIssued><issuance>monographic</issuance></originInfo>"
|
59
|
-
@smods_rec = Stanford::Mods::Record.new
|
60
58
|
@smods_rec.from_str(m)
|
61
59
|
expect(@smods_rec.pub_date).to eq('1684')
|
62
60
|
end
|
63
61
|
it 'should handle hyphenated range dates' do
|
64
62
|
m = "<mods #{@ns_decl}><originInfo><dateIssued>1282 AH / 1865-6 CE</dateIssued><issuance>monographic</issuance></originInfo>"
|
65
|
-
@smods_rec = Stanford::Mods::Record.new
|
66
63
|
@smods_rec.from_str(m)
|
67
64
|
expect(@smods_rec.pub_date).to eq('1865')
|
68
65
|
end
|
69
66
|
it 'should work with multiple 4 digit dates' do
|
70
67
|
m = "<mods #{@ns_decl}><originInfo><dateCreated>Text dated June 4, 1594; miniatures added by 1596</dateCreated></originInfo>"
|
71
|
-
@smods_rec = Stanford::Mods::Record.new
|
72
68
|
@smods_rec.from_str(m)
|
73
|
-
|
69
|
+
expect(@smods_rec.pub_date).to eq('1594')
|
74
70
|
end
|
75
71
|
it 'should work on 3 digit BC dates' do
|
76
72
|
m = "<mods #{@ns_decl}><originInfo><dateCreated>300 B.C.</dateCreated></originInfo>"
|
77
|
-
@smods_rec = Stanford::Mods::Record.new
|
78
73
|
@smods_rec.from_str(m)
|
79
74
|
expect(@smods_rec.pub_year).to eq('-700')
|
80
75
|
expect(@smods_rec.pub_date).to eq('-700')
|
@@ -83,7 +78,6 @@ describe "Date methods (searchworks.rb)" do
|
|
83
78
|
end
|
84
79
|
it 'should handle century based dates' do
|
85
80
|
m = "<mods #{@ns_decl}><originInfo><dateIssued>13th century AH / 19th CE</dateIssued><issuance>monographic</issuance></originInfo>"
|
86
|
-
@smods_rec = Stanford::Mods::Record.new
|
87
81
|
@smods_rec.from_str(m)
|
88
82
|
expect(@smods_rec.pub_date_facet).to eq('19th century')
|
89
83
|
expect(@smods_rec.pub_date_sort).to eq('1800')
|
@@ -91,7 +85,6 @@ describe "Date methods (searchworks.rb)" do
|
|
91
85
|
end
|
92
86
|
it 'should handle multiple CE dates' do
|
93
87
|
m = "<mods #{@ns_decl}><originInfo><dateIssued>6 Dhu al-Hijjah 923 AH / 1517 CE -- 7 Rabi I 924 AH / 1518 CE</dateIssued><issuance>monographic</issuance></originInfo>"
|
94
|
-
@smods_rec = Stanford::Mods::Record.new
|
95
88
|
@smods_rec.from_str(m)
|
96
89
|
expect(@smods_rec.pub_date).to eq('1517')
|
97
90
|
expect(@smods_rec.pub_date_sort).to eq('1517')
|
@@ -99,7 +92,6 @@ describe "Date methods (searchworks.rb)" do
|
|
99
92
|
end
|
100
93
|
it 'should handle this case from walters' do
|
101
94
|
m = "<mods #{@ns_decl}><originInfo><dateIssued>Late 14th or early 15th century CE</dateIssued><issuance>monographic</issuance></originInfo>"
|
102
|
-
@smods_rec = Stanford::Mods::Record.new
|
103
95
|
@smods_rec.from_str(m)
|
104
96
|
expect(@smods_rec.pub_date).to eq('14--')
|
105
97
|
expect(@smods_rec.pub_date_sort).to eq('1400')
|
@@ -107,7 +99,6 @@ describe "Date methods (searchworks.rb)" do
|
|
107
99
|
end
|
108
100
|
it 'should work on 3 digit dates' do
|
109
101
|
m = "<mods #{@ns_decl}><originInfo><dateIssued>966 CE</dateIssued><issuance>monographic</issuance></originInfo>"
|
110
|
-
@smods_rec = Stanford::Mods::Record.new
|
111
102
|
@smods_rec.from_str(m)
|
112
103
|
expect(@smods_rec.pub_date).to eq('966')
|
113
104
|
expect(@smods_rec.pub_date_sort).to eq('0966')
|
@@ -115,7 +106,6 @@ describe "Date methods (searchworks.rb)" do
|
|
115
106
|
end
|
116
107
|
it 'should work on 3 digit dates' do
|
117
108
|
m = "<mods #{@ns_decl}><originInfo><dateIssued>3rd century AH / 9th CE</dateIssued><issuance>monographic</issuance></originInfo>"
|
118
|
-
@smods_rec = Stanford::Mods::Record.new
|
119
109
|
@smods_rec.from_str(m)
|
120
110
|
expect(@smods_rec.pub_date).to eq('8--')
|
121
111
|
expect(@smods_rec.pub_date_sort).to eq('0800')
|
@@ -123,7 +113,6 @@ describe "Date methods (searchworks.rb)" do
|
|
123
113
|
end
|
124
114
|
it 'should use the dateIssued without marc encoding for pub_date_display and the one with marc encoding for indexing, sorting and faceting' do
|
125
115
|
m = "<mods #{@ns_decl}><originInfo><dateIssued>[186-?]</dateIssued><dateIssued encoding=\"marc\">1860</dateIssued><issuance>monographic</issuance></originInfo>"
|
126
|
-
@smods_rec = Stanford::Mods::Record.new
|
127
116
|
@smods_rec.from_str(m)
|
128
117
|
expect(@smods_rec.pub_date_display).to eq('[186-?]')
|
129
118
|
expect(@smods_rec.pub_date).to eq('1860')
|
@@ -132,7 +121,6 @@ describe "Date methods (searchworks.rb)" do
|
|
132
121
|
end
|
133
122
|
it 'should use the dateIssued without marc encoding for pub_date_display and the one with marc encoding for indexing, sorting and faceting' do
|
134
123
|
m = "<mods #{@ns_decl}><originInfo><dateIssued>1860?]</dateIssued><dateIssued encoding=\"marc\">186?</dateIssued><issuance>monographic</issuance></originInfo>"
|
135
|
-
@smods_rec = Stanford::Mods::Record.new
|
136
124
|
@smods_rec.from_str(m)
|
137
125
|
expect(@smods_rec.pub_date_display).to eq('1860?]')
|
138
126
|
expect(@smods_rec.pub_date).to eq('1860')
|
@@ -353,8 +353,9 @@ describe "Subject fields (searchworks.rb)" do
|
|
353
353
|
end
|
354
354
|
it "should be like geographic_search with the trailing punctuation (and preceding spaces) removed" do
|
355
355
|
m = "<mods #{@ns_decl}><subject>
|
356
|
-
<geographic>comma,</geographic>
|
357
|
-
<geographic>
|
356
|
+
<geographic> comma,</geographic>
|
357
|
+
<geographic>
|
358
|
+
semicolon;</geographic>
|
358
359
|
<geographic>backslash \\</geographic>
|
359
360
|
<geographic>internal, punct;uation</geographic>
|
360
361
|
</subject></mods>"
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
|
-
describe
|
4
|
+
describe 'title fields (searchworks.rb)' do
|
5
5
|
before(:all) do
|
6
6
|
@smods_rec = Stanford::Mods::Record.new
|
7
7
|
@ns_decl = "xmlns='#{Mods::MODS_NS}'"
|
@@ -9,18 +9,18 @@ describe "title fields (searchworks.rb)" do
|
|
9
9
|
@smods_rec.from_str m
|
10
10
|
end
|
11
11
|
|
12
|
-
context
|
13
|
-
it
|
12
|
+
context 'short title (for title_245a_search, title_245a_display) ' do
|
13
|
+
it 'should call :short_titles' do
|
14
14
|
expect(@smods_rec).to receive(:short_titles) # in Mods gem
|
15
15
|
@smods_rec.sw_short_title
|
16
16
|
end
|
17
|
-
it
|
17
|
+
it 'should be a String' do
|
18
18
|
expect(@smods_rec.sw_short_title).to eq 'The Jerk'
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
context
|
23
|
-
it
|
22
|
+
context 'full title (for title_245_search, title_full_display)' do
|
23
|
+
it 'should be a String' do
|
24
24
|
expect(@smods_rec.sw_full_title).to eq 'The Jerk : A Tale of Tourettes.'
|
25
25
|
end
|
26
26
|
it 'should cope with regex chars' do
|
@@ -31,9 +31,9 @@ describe "title fields (searchworks.rb)" do
|
|
31
31
|
expect(@smods_rec.sw_full_title).to eq 'Pius V. Saint, [Michaele Gisleri),'
|
32
32
|
end
|
33
33
|
|
34
|
-
context
|
35
|
-
context
|
36
|
-
it
|
34
|
+
context 'punctuation' do
|
35
|
+
context 'no subtitle' do
|
36
|
+
it 'end title with a period' do
|
37
37
|
m = "<mods #{@ns_decl}>
|
38
38
|
<titleInfo>
|
39
39
|
<nonSort>The</nonSort>
|
@@ -42,7 +42,7 @@ describe "title fields (searchworks.rb)" do
|
|
42
42
|
@smods_rec.from_str(m)
|
43
43
|
expect(@smods_rec.sw_full_title).to eq 'The Olympics.'
|
44
44
|
end
|
45
|
-
it
|
45
|
+
it 'title already ends in period' do
|
46
46
|
m = "<mods #{@ns_decl}>
|
47
47
|
<titleInfo>
|
48
48
|
<nonSort>The</nonSort>
|
@@ -51,7 +51,7 @@ describe "title fields (searchworks.rb)" do
|
|
51
51
|
@smods_rec.from_str(m)
|
52
52
|
expect(@smods_rec.sw_full_title).to eq 'The Olympics.'
|
53
53
|
end
|
54
|
-
it
|
54
|
+
it 'title already ends in other punctuation' do
|
55
55
|
m = "<mods #{@ns_decl}>
|
56
56
|
<titleInfo>
|
57
57
|
<nonSort>The</nonSort>
|
@@ -61,8 +61,8 @@ describe "title fields (searchworks.rb)" do
|
|
61
61
|
expect(@smods_rec.sw_full_title).to eq 'The Olympics!'
|
62
62
|
end
|
63
63
|
end # no subtitle
|
64
|
-
context
|
65
|
-
it
|
64
|
+
context 'subtitle' do
|
65
|
+
it 'end title with a colon' do
|
66
66
|
m = "<mods #{@ns_decl}>
|
67
67
|
<titleInfo>
|
68
68
|
<nonSort>The</nonSort>
|
@@ -72,7 +72,7 @@ describe "title fields (searchworks.rb)" do
|
|
72
72
|
@smods_rec.from_str(m)
|
73
73
|
expect(@smods_rec.sw_full_title).to eq 'The Olympics : a history.'
|
74
74
|
end
|
75
|
-
it
|
75
|
+
it 'title already ends with colon' do
|
76
76
|
m = "<mods #{@ns_decl}>
|
77
77
|
<titleInfo>
|
78
78
|
<nonSort>The</nonSort>
|
@@ -83,7 +83,7 @@ describe "title fields (searchworks.rb)" do
|
|
83
83
|
expect(@smods_rec.sw_full_title).to eq 'The Olympics : a history.'
|
84
84
|
end #
|
85
85
|
# "end subtitle with period" - see above
|
86
|
-
it
|
86
|
+
it 'subtitle already ends with period' do
|
87
87
|
m = "<mods #{@ns_decl}>
|
88
88
|
<titleInfo>
|
89
89
|
<nonSort>The</nonSort>
|
@@ -93,7 +93,7 @@ describe "title fields (searchworks.rb)" do
|
|
93
93
|
@smods_rec.from_str(m)
|
94
94
|
expect(@smods_rec.sw_full_title).to eq 'The Olympics : a history.'
|
95
95
|
end
|
96
|
-
it
|
96
|
+
it 'subtitle already ends with other punctuation' do
|
97
97
|
m = "<mods #{@ns_decl}>
|
98
98
|
<titleInfo>
|
99
99
|
<nonSort>The</nonSort>
|
@@ -104,9 +104,9 @@ describe "title fields (searchworks.rb)" do
|
|
104
104
|
expect(@smods_rec.sw_full_title).to eq 'The Olympics : a history?'
|
105
105
|
end
|
106
106
|
end # subtitle
|
107
|
-
context
|
108
|
-
context
|
109
|
-
it
|
107
|
+
context 'partName' do
|
108
|
+
context 'no partNumber' do
|
109
|
+
it 'end partName with period' do
|
110
110
|
m = "<mods #{@ns_decl}>
|
111
111
|
<titleInfo>
|
112
112
|
<nonSort>The</nonSort>
|
@@ -124,7 +124,7 @@ describe "title fields (searchworks.rb)" do
|
|
124
124
|
@smods_rec.from_str(m)
|
125
125
|
expect(@smods_rec.sw_full_title).to eq 'cfb. Appendix.'
|
126
126
|
end
|
127
|
-
it
|
127
|
+
it 'partName already ends with period' do
|
128
128
|
m = "<mods #{@ns_decl}>
|
129
129
|
<titleInfo>
|
130
130
|
<nonSort>The</nonSort>
|
@@ -143,8 +143,8 @@ describe "title fields (searchworks.rb)" do
|
|
143
143
|
expect(@smods_rec.sw_full_title).to eq 'cfb. Appendix.'
|
144
144
|
end
|
145
145
|
end # no partNumber
|
146
|
-
context
|
147
|
-
it
|
146
|
+
context 'partNumber' do
|
147
|
+
it 'end partNumber with comma' do
|
148
148
|
m = "<mods #{@ns_decl}>
|
149
149
|
<titleInfo>
|
150
150
|
<nonSort>The</nonSort>
|
@@ -164,7 +164,7 @@ describe "title fields (searchworks.rb)" do
|
|
164
164
|
@smods_rec.from_str(m)
|
165
165
|
expect(@smods_rec.sw_full_title).to eq 'cfb. 1894, Appendix.'
|
166
166
|
end
|
167
|
-
it
|
167
|
+
it 'partNumber already ends with comma' do
|
168
168
|
m = "<mods #{@ns_decl}>
|
169
169
|
<titleInfo>
|
170
170
|
<nonSort>The</nonSort>
|
@@ -186,8 +186,8 @@ describe "title fields (searchworks.rb)" do
|
|
186
186
|
end
|
187
187
|
end
|
188
188
|
end # partName
|
189
|
-
context
|
190
|
-
it
|
189
|
+
context 'no partName, but partNumber' do
|
190
|
+
it 'end partNumber with period' do
|
191
191
|
m = "<mods #{@ns_decl}>
|
192
192
|
<titleInfo>
|
193
193
|
<nonSort>The</nonSort>
|
@@ -205,7 +205,7 @@ describe "title fields (searchworks.rb)" do
|
|
205
205
|
@smods_rec.from_str(m)
|
206
206
|
expect(@smods_rec.sw_full_title).to eq 'cfb. 1894.'
|
207
207
|
end
|
208
|
-
it
|
208
|
+
it 'parNumber already ends in period' do
|
209
209
|
m = "<mods #{@ns_decl}>
|
210
210
|
<titleInfo>
|
211
211
|
<nonSort>The</nonSort>
|
@@ -223,7 +223,7 @@ describe "title fields (searchworks.rb)" do
|
|
223
223
|
@smods_rec.from_str(m)
|
224
224
|
expect(@smods_rec.sw_full_title).to eq 'cfb. 1894.'
|
225
225
|
end
|
226
|
-
it
|
226
|
+
it 'partNumber already ends with other punctuation' do
|
227
227
|
m = "<mods #{@ns_decl}>
|
228
228
|
<titleInfo>
|
229
229
|
<nonSort>The</nonSort>
|
@@ -245,11 +245,10 @@ describe "title fields (searchworks.rb)" do
|
|
245
245
|
end # punctuation
|
246
246
|
end # sw_full_title
|
247
247
|
|
248
|
-
context
|
249
|
-
|
248
|
+
context 'sw_title_display removes end punctuation of sw_full_title_display' do
|
250
249
|
# title_display = custom, removeTrailingPunct(245abdefghijklmnopqrstuvwxyz, [\\\\,/;:], ([A-Za-z]{4}|[0-9]{3}|\\)|\\,))
|
251
250
|
context "should remove trailing \,/;:." do
|
252
|
-
it
|
251
|
+
it 'retains other trailing chars' do
|
253
252
|
m = "<mods #{@ns_decl}><titleInfo>
|
254
253
|
<title>The Jerk?</title>
|
255
254
|
</titleInfo></mods>"
|
@@ -261,42 +260,42 @@ describe "title fields (searchworks.rb)" do
|
|
261
260
|
@smods_rec.from_str(m)
|
262
261
|
expect(@smods_rec.sw_title_display).to eq 'The Jerk!'
|
263
262
|
end
|
264
|
-
it
|
263
|
+
it 'removes trailing comma' do
|
265
264
|
m = "<mods #{@ns_decl}><titleInfo>
|
266
265
|
<title>The Jerk,</title>
|
267
266
|
</titleInfo></mods>"
|
268
267
|
@smods_rec.from_str(m)
|
269
268
|
expect(@smods_rec.sw_title_display).to eq 'The Jerk'
|
270
269
|
end
|
271
|
-
it
|
270
|
+
it 'removes trailing semicolon' do
|
272
271
|
m = "<mods #{@ns_decl}><titleInfo>
|
273
272
|
<title>The Jerk;</title>
|
274
273
|
</titleInfo></mods>"
|
275
274
|
@smods_rec.from_str(m)
|
276
275
|
expect(@smods_rec.sw_title_display).to eq 'The Jerk'
|
277
276
|
end
|
278
|
-
it
|
277
|
+
it 'removes trailing colon' do
|
279
278
|
m = "<mods #{@ns_decl}><titleInfo>
|
280
279
|
<title>The Jerk:</title>
|
281
280
|
</titleInfo></mods>"
|
282
281
|
@smods_rec.from_str(m)
|
283
282
|
expect(@smods_rec.sw_title_display).to eq 'The Jerk'
|
284
283
|
end
|
285
|
-
it
|
284
|
+
it 'removes trailing slash' do
|
286
285
|
m = "<mods #{@ns_decl}><titleInfo>
|
287
286
|
<title>The Jerk /</title>
|
288
287
|
</titleInfo></mods>"
|
289
288
|
@smods_rec.from_str(m)
|
290
289
|
expect(@smods_rec.sw_title_display).to eq 'The Jerk'
|
291
290
|
end
|
292
|
-
it
|
291
|
+
it 'removes trailing backslash' do
|
293
292
|
m = "<mods #{@ns_decl}><titleInfo>
|
294
293
|
<title>The Jerk \</title>
|
295
294
|
</titleInfo></mods>"
|
296
295
|
@smods_rec.from_str(m)
|
297
296
|
expect(@smods_rec.sw_title_display).to eq 'The Jerk'
|
298
297
|
end
|
299
|
-
it
|
298
|
+
it 'removes multiple trailing punctuation' do
|
300
299
|
m = "<mods #{@ns_decl}><titleInfo>
|
301
300
|
<title>The Jerk.,\</title>
|
302
301
|
</titleInfo></mods>"
|
@@ -304,8 +303,8 @@ describe "title fields (searchworks.rb)" do
|
|
304
303
|
expect(@smods_rec.sw_title_display).to eq 'The Jerk'
|
305
304
|
end
|
306
305
|
end
|
307
|
-
context
|
308
|
-
it
|
306
|
+
context 'no subtitle' do
|
307
|
+
it 'end title with a period' do
|
309
308
|
m = "<mods #{@ns_decl}>
|
310
309
|
<titleInfo>
|
311
310
|
<nonSort>The</nonSort>
|
@@ -314,7 +313,7 @@ describe "title fields (searchworks.rb)" do
|
|
314
313
|
@smods_rec.from_str(m)
|
315
314
|
expect(@smods_rec.sw_title_display).to eq 'The Olympics'
|
316
315
|
end
|
317
|
-
it
|
316
|
+
it 'title already ends in period' do
|
318
317
|
m = "<mods #{@ns_decl}>
|
319
318
|
<titleInfo>
|
320
319
|
<nonSort>The</nonSort>
|
@@ -323,7 +322,7 @@ describe "title fields (searchworks.rb)" do
|
|
323
322
|
@smods_rec.from_str(m)
|
324
323
|
expect(@smods_rec.sw_title_display).to eq 'The Olympics'
|
325
324
|
end
|
326
|
-
it
|
325
|
+
it 'title already ends in other punctuation' do
|
327
326
|
m = "<mods #{@ns_decl}>
|
328
327
|
<titleInfo>
|
329
328
|
<nonSort>The</nonSort>
|
@@ -333,8 +332,8 @@ describe "title fields (searchworks.rb)" do
|
|
333
332
|
expect(@smods_rec.sw_title_display).to eq 'The Olympics!'
|
334
333
|
end
|
335
334
|
end # no subtitle
|
336
|
-
context
|
337
|
-
it
|
335
|
+
context 'subtitle' do
|
336
|
+
it 'end title with a colon' do
|
338
337
|
m = "<mods #{@ns_decl}>
|
339
338
|
<titleInfo>
|
340
339
|
<nonSort>The</nonSort>
|
@@ -344,7 +343,7 @@ describe "title fields (searchworks.rb)" do
|
|
344
343
|
@smods_rec.from_str(m)
|
345
344
|
expect(@smods_rec.sw_title_display).to eq 'The Olympics : a history'
|
346
345
|
end
|
347
|
-
it
|
346
|
+
it 'title already ends with colon' do
|
348
347
|
m = "<mods #{@ns_decl}>
|
349
348
|
<titleInfo>
|
350
349
|
<nonSort>The</nonSort>
|
@@ -355,7 +354,7 @@ describe "title fields (searchworks.rb)" do
|
|
355
354
|
expect(@smods_rec.sw_title_display).to eq 'The Olympics : a history'
|
356
355
|
end #
|
357
356
|
# "end subtitle with period" - see above
|
358
|
-
it
|
357
|
+
it 'subtitle already ends with period' do
|
359
358
|
m = "<mods #{@ns_decl}>
|
360
359
|
<titleInfo>
|
361
360
|
<nonSort>The</nonSort>
|
@@ -365,7 +364,7 @@ describe "title fields (searchworks.rb)" do
|
|
365
364
|
@smods_rec.from_str(m)
|
366
365
|
expect(@smods_rec.sw_title_display).to eq 'The Olympics : a history'
|
367
366
|
end
|
368
|
-
it
|
367
|
+
it 'subtitle already ends with other punctuation' do
|
369
368
|
m = "<mods #{@ns_decl}>
|
370
369
|
<titleInfo>
|
371
370
|
<nonSort>The</nonSort>
|
@@ -376,9 +375,9 @@ describe "title fields (searchworks.rb)" do
|
|
376
375
|
expect(@smods_rec.sw_title_display).to eq 'The Olympics : a history?'
|
377
376
|
end
|
378
377
|
end # subtitle
|
379
|
-
context
|
380
|
-
context
|
381
|
-
it
|
378
|
+
context 'partName' do
|
379
|
+
context 'no partNumber' do
|
380
|
+
it 'end partName with period' do
|
382
381
|
m = "<mods #{@ns_decl}>
|
383
382
|
<titleInfo>
|
384
383
|
<nonSort>The</nonSort>
|
@@ -396,7 +395,7 @@ describe "title fields (searchworks.rb)" do
|
|
396
395
|
@smods_rec.from_str(m)
|
397
396
|
expect(@smods_rec.sw_title_display).to eq 'cfb. Appendix'
|
398
397
|
end
|
399
|
-
it
|
398
|
+
it 'partName already ends with period' do
|
400
399
|
m = "<mods #{@ns_decl}>
|
401
400
|
<titleInfo>
|
402
401
|
<nonSort>The</nonSort>
|
@@ -415,8 +414,8 @@ describe "title fields (searchworks.rb)" do
|
|
415
414
|
expect(@smods_rec.sw_title_display).to eq 'cfb. Appendix'
|
416
415
|
end
|
417
416
|
end # no partNumber
|
418
|
-
context
|
419
|
-
it
|
417
|
+
context 'partNumber' do
|
418
|
+
it 'end partNumber with comma' do
|
420
419
|
m = "<mods #{@ns_decl}>
|
421
420
|
<titleInfo>
|
422
421
|
<nonSort>The</nonSort>
|
@@ -436,7 +435,7 @@ describe "title fields (searchworks.rb)" do
|
|
436
435
|
@smods_rec.from_str(m)
|
437
436
|
expect(@smods_rec.sw_title_display).to eq 'cfb. 1894, Appendix'
|
438
437
|
end
|
439
|
-
it
|
438
|
+
it 'partNumber already ends with comma' do
|
440
439
|
m = "<mods #{@ns_decl}>
|
441
440
|
<titleInfo>
|
442
441
|
<nonSort>The</nonSort>
|
@@ -458,8 +457,8 @@ describe "title fields (searchworks.rb)" do
|
|
458
457
|
end
|
459
458
|
end
|
460
459
|
end # partName
|
461
|
-
context
|
462
|
-
it
|
460
|
+
context 'no partName, but partNumber' do
|
461
|
+
it 'end partNumber with period' do
|
463
462
|
m = "<mods #{@ns_decl}>
|
464
463
|
<titleInfo>
|
465
464
|
<nonSort>The</nonSort>
|
@@ -477,7 +476,7 @@ describe "title fields (searchworks.rb)" do
|
|
477
476
|
@smods_rec.from_str(m)
|
478
477
|
expect(@smods_rec.sw_title_display).to eq 'cfb. 1894'
|
479
478
|
end
|
480
|
-
it
|
479
|
+
it 'parNumber already ends in period' do
|
481
480
|
m = "<mods #{@ns_decl}>
|
482
481
|
<titleInfo>
|
483
482
|
<nonSort>The</nonSort>
|
@@ -495,7 +494,7 @@ describe "title fields (searchworks.rb)" do
|
|
495
494
|
@smods_rec.from_str(m)
|
496
495
|
expect(@smods_rec.sw_title_display).to eq 'cfb. 1894'
|
497
496
|
end
|
498
|
-
it
|
497
|
+
it 'partNumber already ends with other punctuation' do
|
499
498
|
m = "<mods #{@ns_decl}>
|
500
499
|
<titleInfo>
|
501
500
|
<nonSort>The</nonSort>
|
@@ -516,7 +515,7 @@ describe "title fields (searchworks.rb)" do
|
|
516
515
|
end # no partName but partNumber
|
517
516
|
end # sw_title_display
|
518
517
|
|
519
|
-
context
|
518
|
+
context 'additional titles (for title_variant_search)' do
|
520
519
|
before(:all) do
|
521
520
|
m = "<mods #{@ns_decl}>
|
522
521
|
<titleInfo type='alternative'><title>Alternative</title></titleInfo>
|
@@ -526,14 +525,14 @@ describe "title fields (searchworks.rb)" do
|
|
526
525
|
@smods_rec.from_str(m)
|
527
526
|
@addl_titles = @smods_rec.sw_addl_titles
|
528
527
|
end
|
529
|
-
it
|
528
|
+
it 'should not include the main title' do
|
530
529
|
expect(@addl_titles.size).to eq 2
|
531
530
|
expect(@addl_titles).not_to include(@smods_rec.sw_full_title)
|
532
531
|
end
|
533
|
-
it
|
532
|
+
it 'should include any extra main titles' do
|
534
533
|
expect(@addl_titles).to include('Joke')
|
535
534
|
end
|
536
|
-
it
|
535
|
+
it 'should include all alternative titles' do
|
537
536
|
expect(@addl_titles).to include('Alternative')
|
538
537
|
end
|
539
538
|
it 'should cope with regexp chars in the short title when determining addl titles' do
|
@@ -547,29 +546,34 @@ describe "title fields (searchworks.rb)" do
|
|
547
546
|
end
|
548
547
|
end
|
549
548
|
|
550
|
-
context
|
551
|
-
it
|
549
|
+
context 'sort title' do
|
550
|
+
it 'should be a String' do
|
552
551
|
expect(@smods_rec.sw_sort_title).to be_an_instance_of(String)
|
553
552
|
end
|
554
|
-
it
|
553
|
+
it 'should use the sw_full_title as a starting point' do
|
555
554
|
expect(@smods_rec).to receive(:sw_full_title)
|
556
555
|
@smods_rec.sw_sort_title
|
557
556
|
end
|
558
|
-
it
|
557
|
+
it 'should not begin or end with whitespace' do
|
559
558
|
m = "<mods #{@ns_decl}>
|
560
559
|
<titleInfo><title> Jerk </title></titleInfo>
|
561
560
|
</mods>"
|
562
561
|
@smods_rec.from_str(m)
|
563
562
|
expect(@smods_rec.sw_sort_title).to eq @smods_rec.sw_sort_title.strip
|
564
563
|
end
|
565
|
-
it
|
564
|
+
it 'should not have any punctuation marks' do
|
566
565
|
r = Stanford::Mods::Record.new
|
567
566
|
r.from_str "<mods #{@ns_decl}><titleInfo><title>J,e.r;;;k</title></titleInfo></mods>"
|
568
567
|
expect(r.sw_sort_title).to match /^Jerk$/
|
569
568
|
end
|
569
|
+
it 'should properly handle nonSort tags with metacharacters' do
|
570
|
+
r = Stanford::Mods::Record.new
|
571
|
+
r.from_str "<mods #{@ns_decl}><titleInfo><nonSort>[“</nonSort><title>In hat mappa lector... cum enim tota Chilensis regionus...”]</title></titleInfo></mods>"
|
572
|
+
expect(r.sw_sort_title).to match /^In hat mappa lector cum enim tota Chilensis regionus$/
|
573
|
+
end
|
570
574
|
end
|
571
575
|
|
572
|
-
context
|
576
|
+
context 'part number should be in full title and sort title', jira: ['INDEX-31', 'GRYPHONDOR-372'] do
|
573
577
|
before(:all) do
|
574
578
|
@mccarthy_smods_rec = Stanford::Mods::Record.new
|
575
579
|
mccarthy = "<mods #{@ns_decl}>
|
@@ -607,30 +611,29 @@ describe "title fields (searchworks.rb)" do
|
|
607
611
|
</titleInfo></mods>"
|
608
612
|
@all_smods_rec.from_str(all)
|
609
613
|
end
|
610
|
-
it
|
614
|
+
it 'short titles' do
|
611
615
|
expect(@mccarthy_smods_rec.sw_short_title).to eql 'McCarthy, John'
|
612
616
|
expect(@insp_general_smods_rec.sw_short_title).to eql 'Semiannual report to Congress'
|
613
617
|
expect(@cfb_smods_rec.sw_short_title).to eql 'cfb'
|
614
618
|
expect(@all_smods_rec.sw_short_title).to eql 'The Olympics'
|
615
619
|
end
|
616
|
-
it
|
620
|
+
it 'full titles' do
|
617
621
|
expect(@mccarthy_smods_rec.sw_full_title).to eql 'McCarthy, John. Part 2.'
|
618
622
|
expect(@insp_general_smods_rec.sw_full_title).to eql 'Semiannual report to Congress. October 1, 1998 - March 31, 1999.'
|
619
623
|
expect(@cfb_smods_rec.sw_full_title).to eql 'cfb. 1894, Appendix.'
|
620
624
|
expect(@all_smods_rec.sw_full_title).to eql 'The Olympics : a history. Part 1, Ancient.'
|
621
625
|
end
|
622
|
-
it
|
626
|
+
it 'additional titles' do
|
623
627
|
expect(@mccarthy_smods_rec.sw_addl_titles).to eql []
|
624
628
|
expect(@insp_general_smods_rec.sw_addl_titles).to eql []
|
625
629
|
expect(@cfb_smods_rec.sw_addl_titles).to eql []
|
626
630
|
expect(@all_smods_rec.sw_addl_titles).to eql []
|
627
631
|
end
|
628
|
-
it
|
632
|
+
it 'sort title' do
|
629
633
|
expect(@mccarthy_smods_rec.sw_sort_title).to eql 'McCarthy John Part 2'
|
630
634
|
expect(@insp_general_smods_rec.sw_sort_title).to eql 'Semiannual report to Congress October 1 1998 March 31 1999'
|
631
635
|
expect(@cfb_smods_rec.sw_sort_title).to eql 'cfb 1894 Appendix'
|
632
636
|
expect(@all_smods_rec.sw_sort_title).to eql 'Olympics a history Part 1 Ancient'
|
633
637
|
end
|
634
638
|
end
|
635
|
-
|
636
639
|
end
|
data/stanford-mods.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.summary = "Stanford specific wrangling of MODS metadata"
|
11
11
|
gem.homepage = "https://github.com/sul-dlss/stanford-mods"
|
12
12
|
|
13
|
-
gem.extra_rdoc_files = ["LICENSE", "README.
|
13
|
+
gem.extra_rdoc_files = ["LICENSE", "README.md"]
|
14
14
|
gem.files = `git ls-files`.split($\)
|
15
15
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
16
16
|
gem.test_files = gem.files.grep(%r{^spec/})
|
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.1.
|
4
|
+
version: 1.1.5
|
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: 2015-
|
12
|
+
date: 2015-10-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mods
|
@@ -90,7 +90,7 @@ executables: []
|
|
90
90
|
extensions: []
|
91
91
|
extra_rdoc_files:
|
92
92
|
- LICENSE
|
93
|
-
- README.
|
93
|
+
- README.md
|
94
94
|
files:
|
95
95
|
- ".coveralls.yml"
|
96
96
|
- ".gitignore"
|
@@ -99,7 +99,7 @@ files:
|
|
99
99
|
- ".yardopts"
|
100
100
|
- Gemfile
|
101
101
|
- LICENSE
|
102
|
-
- README.
|
102
|
+
- README.md
|
103
103
|
- Rakefile
|
104
104
|
- config/mappings_hash.rb
|
105
105
|
- lib/stanford-mods.rb
|
@@ -135,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
135
|
version: '0'
|
136
136
|
requirements: []
|
137
137
|
rubyforge_project:
|
138
|
-
rubygems_version: 2.
|
138
|
+
rubygems_version: 2.4.8
|
139
139
|
signing_key:
|
140
140
|
specification_version: 4
|
141
141
|
summary: Stanford specific wrangling of MODS metadata
|
data/README.rdoc
DELETED
@@ -1,85 +0,0 @@
|
|
1
|
-
= Stanford::Mods
|
2
|
-
|
3
|
-
{<img src="https://secure.travis-ci.org/sul-dlss/stanford-mods.png?branch=master" alt="Build Status" />}[http://travis-ci.org/sul-dlss/stanford-mods] {<img src="https://coveralls.io/repos/sul-dlss/stanford-mods/badge.png" alt="Coverage Status" />}[https://coveralls.io/r/sul-dlss/stanford-mods] {<img src="https://gemnasium.com/sul-dlss/stanford-mods.png" alt="Dependency Status" />}[https://gemnasium.com/sul-dlss/stanford-mods] {<img src="https://badge.fury.io/rb/stanford-mods.svg" alt="Gem Version" />}[http://badge.fury.io/rb/stanford-mods]
|
4
|
-
|
5
|
-
A Gem with Stanford specific wranglings of MODS (Metadata Object Description Schema) metadata from DOR, the Stanford Digital Object Repository.
|
6
|
-
|
7
|
-
Source code at https://github.com/sul-dlss/stanford-mods/
|
8
|
-
|
9
|
-
Generated API docs at http://rubydoc.info/github/sul-dlss/stanford-mods/
|
10
|
-
|
11
|
-
== Installation
|
12
|
-
|
13
|
-
Add this line to your application's Gemfile:
|
14
|
-
|
15
|
-
gem 'stanford-mods'
|
16
|
-
|
17
|
-
And then execute:
|
18
|
-
|
19
|
-
$ bundle
|
20
|
-
|
21
|
-
Or install it yourself as:
|
22
|
-
|
23
|
-
$ gem install stanford-mods
|
24
|
-
|
25
|
-
== Usage
|
26
|
-
|
27
|
-
1. add stanford-mods to your gemfile
|
28
|
-
2. require 'stanford-mods'
|
29
|
-
|
30
|
-
> m = Stanford::Mods::Record.new
|
31
|
-
> m.from_str('<mods><genre>ape</genre></mods>')
|
32
|
-
> m.genre
|
33
|
-
=> [#<Nokogiri::XML::Element:0x3fe07b48bb24 name="genre" children=[#<Nokogiri::XML::Text:0x3fe07a09a7dc "ape">]>]
|
34
|
-
> m.genre.text
|
35
|
-
=> "ape"
|
36
|
-
|
37
|
-
> m.to_be_removed <-- method I wrote in stanford-mods for proof of concept
|
38
|
-
in foo!
|
39
|
-
=> nil
|
40
|
-
|
41
|
-
Example Using SearchWorks Mixins:
|
42
|
-
|
43
|
-
> require 'stanford-mods/searchworks'
|
44
|
-
> m = Stanford::Mods::Record.new
|
45
|
-
> m.from_str('<mods><language><languageTerm authority="iso639-2b" type="code">dut</languageTerm></language></mods>')
|
46
|
-
> m.language_facet <-- from Searchworks mixin
|
47
|
-
=> ['Dutch']
|
48
|
-
> m.languages <-- from mods gem
|
49
|
-
=> ['Dutch; Flemish']
|
50
|
-
|
51
|
-
== Contributing
|
52
|
-
|
53
|
-
1. Fork it
|
54
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
55
|
-
3. Write code and tests.
|
56
|
-
4. Commit your changes (`git commit -am 'Added some feature'`)
|
57
|
-
5. Push to the branch (`git push origin my-new-feature`)
|
58
|
-
6. Create new Pull Request
|
59
|
-
|
60
|
-
== Releases
|
61
|
-
* <b>1.1.2</b> Corrected java Character.MAX_CODE_POINT value from \u{FFFF} to \u{10FFFF}
|
62
|
-
* <b>1.1.1</b> Minor bug fixes
|
63
|
-
* <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
|
64
|
-
* <b>1.0.3</b> format_main value 'Article' is now 'Book'
|
65
|
-
* <b>1.0.2</b> add format_main and sw_genre tests to searchworks.rb
|
66
|
-
* <b>1.0.1</b> sw_title_display keeps appropriate trailing punct more or less per spec in solrmarc-sw sw_index.properties
|
67
|
-
* <b>1.0.0</b> sw_full_title now includes partName and partNumber; sw_title_display created to be like sw_full_title but without trailing punctuation; sw format for typeOfResource sound recording; genre value is librettos, plural; sw format algorithm accommodates first letter upcase; genre value report does NOT map to a format, genre value 'project report' with ToR text is 'Book'
|
68
|
-
* <b>0.0.27</b> add genres 'Issue brief', 'Book chapter' and 'Working paper' to map to searchworks format 'Book'
|
69
|
-
* <b>0.0.26</b> map typeOfResource 'sound recording-musical' to searchworks format 'Music - Recording' with spaces
|
70
|
-
* <b>0.0.25</b> map typeOfResource 'text' and genre 'report' to searchworks format 'Book'
|
71
|
-
* <b>0.0.24</b> Largely cosmetic refactoring for easier maintenance.
|
72
|
-
* <b>0.0.23</b> Added logic for dealing with "u-notation" approximate dates, e.g., 198u
|
73
|
-
* <b>0.0.20</b> Added mapping for typeOfResource notated music
|
74
|
-
* <b>0.0.19</b> Additional mappings, including Hydrus formats (GRYPHONDOR-207)
|
75
|
-
* <b>0.0.11</b> escape regex special characters when using short title in a regex
|
76
|
-
* <b>0.0.10</b> get rid of ignore_me files
|
77
|
-
* <b>0.0.9</b> add sw_subject_names and sw_subject_titles methods to searchworks mixin
|
78
|
-
* <b>0.0.8</b> require stanford-mods/searchworks in stanford-mods (top level)
|
79
|
-
* <b>0.0.7</b> added sw_geographic_search to searchworks mixin
|
80
|
-
* <b>0.0.6</b> various title methods added to searchworks mixin
|
81
|
-
* <b>0.0.5</b> main_author_w_date, additional_authors_w_dates added to Stanford::Mods::Record; various author methods added to searchworks mixin
|
82
|
-
* <b>0.0.4</b> KolbRecord started
|
83
|
-
* <b>0.0.3</b> began SearchWorks mixins with sw_access_facet and sw_language_facet
|
84
|
-
* <b>0.0.2</b> add usage instructions to readme
|
85
|
-
* <b>0.0.1</b> Initial commit - grab name
|