stanford-mods 0.0.5 → 0.0.6
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.
- data/README.rdoc +1 -0
- data/lib/stanford-mods/searchworks.rb +25 -1
- data/lib/stanford-mods/version.rb +1 -1
- data/spec/searchworks_spec.rb +74 -8
- metadata +3 -3
data/README.rdoc
CHANGED
@@ -60,6 +60,7 @@ Example Using SearchWorks Mixins:
|
|
60
60
|
|
61
61
|
== Releases
|
62
62
|
|
63
|
+
* <b>0.0.6</b> various title methods added to searchworks mixin
|
63
64
|
* <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
|
64
65
|
* <b>0.0.4</b> KolbRecord started
|
65
66
|
* <b>0.0.3</b> began SearchWorks mixins with sw_access_facet and sw_language_facet
|
@@ -92,10 +92,34 @@ module Stanford
|
|
92
92
|
def sw_sort_author
|
93
93
|
# substitute java Character.MAX_CODE_POINT for nil main_author so missing main authors sort last
|
94
94
|
val = '' + (main_author_w_date ? main_author_w_date : "\u{FFFF} ") + ( sort_title ? sort_title : '')
|
95
|
-
val.gsub(/[[:punct:]]*/, '')
|
95
|
+
val.gsub(/[[:punct:]]*/, '').strip
|
96
96
|
end
|
97
97
|
|
98
|
+
# ---- TITLE ----
|
99
|
+
|
100
|
+
# @return [String] value for title_245a_search field
|
101
|
+
def sw_short_title
|
102
|
+
short_titles ? short_titles.first : nil
|
103
|
+
end
|
104
|
+
|
105
|
+
# @return [String] value for title_245_search, title_display, title_full_display
|
106
|
+
def sw_full_title
|
107
|
+
full_titles ? full_titles.find { |s| s =~ Regexp.new(sw_short_title) } : nil
|
108
|
+
end
|
98
109
|
|
110
|
+
# this includes all titles except
|
111
|
+
# @return [Array<String>] values for title_variant_search
|
112
|
+
def sw_addl_titles
|
113
|
+
full_titles.select { |s| s !~ Regexp.new(sw_short_title) }
|
114
|
+
end
|
115
|
+
|
116
|
+
# Returns a sortable version of the main title
|
117
|
+
# @return [String] value for title_sort field
|
118
|
+
def sw_sort_title
|
119
|
+
val = '' + ( sort_title ? sort_title : '')
|
120
|
+
val.gsub(/[[:punct:]]*/, '').strip
|
121
|
+
end
|
122
|
+
|
99
123
|
end # class Record
|
100
124
|
end # Module Mods
|
101
125
|
end # Module Stanford
|
data/spec/searchworks_spec.rb
CHANGED
@@ -33,12 +33,12 @@ describe "Searchworks mixin for Stanford::Mods::Record" do
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
context "
|
36
|
+
context "sw author methods" do
|
37
37
|
before(:all) do
|
38
38
|
m = "<mods #{@ns_decl}><name type='personal'>
|
39
39
|
<namePart type='given'>John</namePart>
|
40
40
|
<namePart type='family'>Huston</namePart>
|
41
|
-
<displayForm>q</displayForm>
|
41
|
+
<displayForm> q</displayForm>
|
42
42
|
</name>
|
43
43
|
<name type='personal'>
|
44
44
|
<namePart>Crusty The Clown</namePart>
|
@@ -72,20 +72,20 @@ describe "Searchworks mixin for Stanford::Mods::Record" do
|
|
72
72
|
@smods_rec.should_receive(:additional_authors_w_dates) # in stanford-mods.rb
|
73
73
|
@smods_rec.sw_addl_authors
|
74
74
|
end
|
75
|
-
it "
|
75
|
+
it "person authors (for author_person_facet, author_person_display)" do
|
76
76
|
@smods_rec.should_receive(:personal_names_w_dates) # in Mods gem
|
77
77
|
@smods_rec.sw_person_authors
|
78
78
|
end
|
79
79
|
it "non-person authors (for author_other_facet)" do
|
80
80
|
@smods_rec.sw_impersonal_authors.should == ['Watchful Eye, 1850-', 'Exciting Prints', 'plain', 'conference', 'family']
|
81
81
|
end
|
82
|
-
it "
|
82
|
+
it "corporate authors (for author_corp_display)" do
|
83
83
|
@smods_rec.sw_corporate_authors.should == ['Watchful Eye, 1850-', 'Exciting Prints']
|
84
84
|
end
|
85
|
-
it "
|
85
|
+
it "meeting authors (for author_meeting_display)" do
|
86
86
|
@smods_rec.sw_meeting_authors.should == ['conference']
|
87
87
|
end
|
88
|
-
context "author
|
88
|
+
context "sort author" do
|
89
89
|
it "should be a String" do
|
90
90
|
@smods_rec.sw_sort_author.should == 'qJerk'
|
91
91
|
end
|
@@ -107,12 +107,78 @@ describe "Searchworks mixin for Stanford::Mods::Record" do
|
|
107
107
|
r.sw_sort_author.should match("\u{FFFF}")
|
108
108
|
r.sw_sort_author.should match("\xEF\xBF\xBF")
|
109
109
|
end
|
110
|
-
it "should not have any
|
110
|
+
it "should not have any punctuation marks" do
|
111
111
|
r = Stanford::Mods::Record.new
|
112
112
|
r.from_str "<mods #{@ns_decl}><titleInfo><title>J,e.r;;;k</title></titleInfo></mods>"
|
113
113
|
r.sw_sort_author.should =~ / Jerk$/
|
114
114
|
end
|
115
115
|
end
|
116
|
-
end
|
116
|
+
end # context sw author methods
|
117
117
|
|
118
|
+
context "sw title methods" do
|
119
|
+
before(:all) do
|
120
|
+
m = "<mods #{@ns_decl}><titleInfo><title>Jerk</title><subTitle>A Tale of Tourettes</subTitle><nonSort>The</nonSort></titleInfo></mods>"
|
121
|
+
@smods_rec.from_str m
|
122
|
+
end
|
123
|
+
context "short title (for title_245a_search, title_245a_display) " do
|
124
|
+
it "should call :short_titles" do
|
125
|
+
@smods_rec.should_receive(:short_titles) # in Mods gem
|
126
|
+
@smods_rec.sw_short_title
|
127
|
+
end
|
128
|
+
it "should be a String" do
|
129
|
+
@smods_rec.sw_short_title.should == 'The Jerk'
|
130
|
+
end
|
131
|
+
end
|
132
|
+
context "full title (for title_245_search, title_display, title_full_display)" do
|
133
|
+
it "should call :full_titles" do
|
134
|
+
@smods_rec.should_receive(:full_titles) # in Mods gem
|
135
|
+
@smods_rec.sw_full_title
|
136
|
+
end
|
137
|
+
it "should be a String" do
|
138
|
+
@smods_rec.sw_full_title.should == 'The Jerk A Tale of Tourettes'
|
139
|
+
end
|
140
|
+
end
|
141
|
+
context "additional titles (for title_variant_search)" do
|
142
|
+
before(:all) do
|
143
|
+
m = "<mods #{@ns_decl}>
|
144
|
+
<titleInfo type='alternative'><title>Alternative</title></titleInfo>
|
145
|
+
<titleInfo><title>Jerk</title><nonSort>The</nonSort></titleInfo>
|
146
|
+
<titleInfo><title>Joke</title></titleInfo>
|
147
|
+
</mods>"
|
148
|
+
@smods_rec.from_str(m)
|
149
|
+
@addl_titles = @smods_rec.sw_addl_titles
|
150
|
+
end
|
151
|
+
it "should not include the main title" do
|
152
|
+
@addl_titles.size.should == 2
|
153
|
+
@addl_titles.should_not include(@smods_rec.sw_full_title)
|
154
|
+
end
|
155
|
+
it "should include any extra main titles" do
|
156
|
+
@addl_titles.should include('Joke')
|
157
|
+
end
|
158
|
+
it "should include all alternative titles" do
|
159
|
+
@addl_titles.should include('Alternative')
|
160
|
+
end
|
161
|
+
end
|
162
|
+
context "sort title" do
|
163
|
+
it "should be a String" do
|
164
|
+
@smods_rec.sw_sort_title.should be_an_instance_of(String)
|
165
|
+
end
|
166
|
+
it "should use the sort title, as retrieved by :sort_title" do
|
167
|
+
@smods_rec.should_receive(:sort_title) # in Mods gem
|
168
|
+
@smods_rec.sw_sort_title
|
169
|
+
end
|
170
|
+
it "should not begin or end with whitespace" do
|
171
|
+
m = "<mods #{@ns_decl}>
|
172
|
+
<titleInfo><title> Jerk </title></titleInfo>
|
173
|
+
</mods>"
|
174
|
+
@smods_rec.from_str(m)
|
175
|
+
@smods_rec.sw_sort_title.should == @smods_rec.sw_sort_title.strip
|
176
|
+
end
|
177
|
+
it "should not have any punctuation marks" do
|
178
|
+
r = Stanford::Mods::Record.new
|
179
|
+
r.from_str "<mods #{@ns_decl}><titleInfo><title>J,e.r;;;k</title></titleInfo></mods>"
|
180
|
+
r.sw_sort_title.should =~ /^Jerk$/
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
118
184
|
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: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -170,7 +170,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
170
170
|
version: '0'
|
171
171
|
segments:
|
172
172
|
- 0
|
173
|
-
hash:
|
173
|
+
hash: 1154889881956546953
|
174
174
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
175
175
|
none: false
|
176
176
|
requirements:
|
@@ -179,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
179
179
|
version: '0'
|
180
180
|
segments:
|
181
181
|
- 0
|
182
|
-
hash:
|
182
|
+
hash: 1154889881956546953
|
183
183
|
requirements: []
|
184
184
|
rubyforge_project:
|
185
185
|
rubygems_version: 1.8.24
|