stanford-mods 2.3.1 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/stanford-mods/geo_spatial.rb +28 -11
- data/lib/stanford-mods/origin_info.rb +35 -58
- data/lib/stanford-mods/physical_location.rb +38 -60
- data/lib/stanford-mods/searchworks_subjects.rb +16 -27
- data/lib/stanford-mods/version.rb +1 -1
- data/spec/geo_spatial_spec.rb +25 -1
- 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: a4fe370e5f566e6a8aaf2cecf78f8d2f261e83d3
|
4
|
+
data.tar.gz: 7fd7c27ee40726c0509190ef9dfd398fba91d95d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac960448cdf1c552d8e78822735bfacce0dfd193a729e8f8f8f4b6516c6eb06cb639546ce3183f5be5d6283251036e82b4f53ed04b2d482fe01da80440d208fc
|
7
|
+
data.tar.gz: bbdd468328c00a918ecf898a2217f58cf8b3737a4e541246da480103bf9405293350410f2629f4492ae591bb47d0dd8a6223dce1f0abf88a55c2de1c18ce1681
|
@@ -18,19 +18,36 @@ module Stanford
|
|
18
18
|
# <gml:upperCorner>-122.149475 37.4435369</gml:upperCorner>
|
19
19
|
def geo_extensions_as_envelope
|
20
20
|
mods_ng_xml.extension
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
21
|
+
.xpath(
|
22
|
+
'//rdf:RDF/rdf:Description/gml:boundedBy/gml:Envelope',
|
23
|
+
'gml' => GMLNS,
|
24
|
+
'rdf' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'
|
25
|
+
).map do |v|
|
26
|
+
uppers = v.xpath('gml:upperCorner', 'gml' => GMLNS).text.split
|
27
|
+
lowers = v.xpath('gml:lowerCorner', 'gml' => GMLNS).text.split
|
28
|
+
"ENVELOPE(#{lowers[0]}, #{uppers[0]}, #{uppers[1]}, #{lowers[1]})"
|
29
|
+
end
|
29
30
|
rescue RuntimeError => e
|
30
31
|
logger.warn "failure parsing <extension> element: #{e.message}"
|
31
32
|
[]
|
32
33
|
end
|
33
34
|
|
35
|
+
# @return [Array{String}] values suitable for solr SRPT fields, like "-16.0 28.0"
|
36
|
+
# @note example xml leaf nodes
|
37
|
+
# <gml:pos>-122.191292 37.4063388</gml:pos>
|
38
|
+
def geo_extensions_point_data
|
39
|
+
mods_ng_xml.extension
|
40
|
+
.xpath(
|
41
|
+
'//rdf:RDF/rdf:Description/gmd:centerPoint/gml:Point[gml:pos]',
|
42
|
+
'gml' => GMLNS,
|
43
|
+
'gmd' => 'http://www.isotc211.org/2005/gmd',
|
44
|
+
'rdf' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'
|
45
|
+
).map do |v|
|
46
|
+
lat, long = v.xpath('gml:pos', 'gml' => GMLNS).text.split
|
47
|
+
"#{long} #{lat}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
34
51
|
# @return [Array{Stanford::Mods::Coordinate}] valid coordinates as objects
|
35
52
|
def coordinates_objects
|
36
53
|
coordinates.map { |n| Stanford::Mods::Coordinate.new(n) }.select(&:valid?)
|
@@ -47,6 +64,6 @@ module Stanford
|
|
47
64
|
end
|
48
65
|
|
49
66
|
alias point_bbox coordinates_as_bbox
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -13,10 +13,9 @@ module Stanford
|
|
13
13
|
# return pub year as an Integer
|
14
14
|
# prefer dateIssued (any) before dateCreated (any) before dateCaptured (any)
|
15
15
|
# look for a keyDate and use it if there is one; otherwise pick earliest date
|
16
|
-
# @param [Boolean] ignore_approximate true if approximate dates (per qualifier attribute)
|
17
|
-
# should be ignored; false if approximate dates should be included
|
16
|
+
# @param [Boolean] ignore_approximate true if approximate dates (per qualifier attribute) should be ignored; false if approximate dates should be included
|
18
17
|
# @return [Integer] publication year as an Integer
|
19
|
-
#
|
18
|
+
# @note for sorting: 5 B.C. => -5; 666 B.C. => -666
|
20
19
|
def pub_year_int(ignore_approximate = false)
|
21
20
|
single_pub_year(ignore_approximate, :year_int)
|
22
21
|
end
|
@@ -24,11 +23,10 @@ module Stanford
|
|
24
23
|
# return a single string intended for lexical sorting for pub date
|
25
24
|
# prefer dateIssued (any) before dateCreated (any) before dateCaptured (any)
|
26
25
|
# look for a keyDate and use it if there is one; otherwise pick earliest date
|
27
|
-
# @param [Boolean] ignore_approximate true if approximate dates (per qualifier attribute)
|
28
|
-
# should be ignored; false if approximate dates should be included
|
26
|
+
# @param [Boolean] ignore_approximate true if approximate dates (per qualifier attribute) should be ignored; false if approximate dates should be included
|
29
27
|
# @return [String] single String containing publication year for lexical sorting
|
30
|
-
#
|
31
|
-
# @deprecated
|
28
|
+
# @note for string sorting 5 B.C. = -5 => -995; 6 B.C. => -994, so 6 B.C. sorts before 5 B.C.
|
29
|
+
# @deprecated use pub_year_int
|
32
30
|
def pub_year_sort_str(ignore_approximate = false)
|
33
31
|
single_pub_year(ignore_approximate, :year_sort_str)
|
34
32
|
end
|
@@ -186,8 +184,7 @@ module Stanford
|
|
186
184
|
result = send(method_sym, date_issued_elements(ignore_approximate))
|
187
185
|
result ||= send(method_sym, date_created_elements(ignore_approximate))
|
188
186
|
# dateCaptured for web archive seed records
|
189
|
-
result
|
190
|
-
result
|
187
|
+
result || send(method_sym, mods_ng_xml.origin_info.dateCaptured.to_a)
|
191
188
|
end
|
192
189
|
|
193
190
|
# given the passed date elements, look for a single keyDate and use it if there is one;
|
@@ -210,10 +207,9 @@ module Stanford
|
|
210
207
|
# get earliest parseable year from the passed date elements
|
211
208
|
# @param [Array<Nokogiri::XML::Element>] date_el_array the elements from which to select a pub date
|
212
209
|
# @param [Symbol] method_sym method name in DateParsing, as a symbol
|
213
|
-
# @return two values:
|
214
|
-
#
|
215
|
-
#
|
216
|
-
# the second is the original String value of the chosen element
|
210
|
+
# @return [Array<String,Integer>] two values: earliest date and the original element string
|
211
|
+
# - first is earliest date either as lexically sortable String value or the Integer, depending on method_sym
|
212
|
+
# - second is the original String value of the chosen element
|
217
213
|
def earliest_year(date_el_array, method_sym)
|
218
214
|
poss_results = {}
|
219
215
|
date_el_array.each { |el|
|
@@ -228,8 +224,7 @@ module Stanford
|
|
228
224
|
# ---- old date parsing methods used downstream of gem; will be deprecated/replaced with new date parsing methods
|
229
225
|
|
230
226
|
def place
|
231
|
-
|
232
|
-
vals
|
227
|
+
term_values([:origin_info, :place, :placeTerm])
|
233
228
|
end
|
234
229
|
|
235
230
|
# Values for the pub date facet. This is less strict than the 4 year date requirements for pub_date
|
@@ -237,28 +232,18 @@ module Stanford
|
|
237
232
|
# Spotlight: pub_date field should be replaced by pub_year_w_approx_isi and pub_year_no_approx_isi
|
238
233
|
# SearchWorks: pub_date field used for display in search results and show view; for sorting nearby-on-shelf
|
239
234
|
# these could be done with more approp fields/methods (pub_year_int for sorting; new pub year methods to populate field)
|
240
|
-
# TODO:
|
235
|
+
# TODO: prob should deprecate this in favor of pub_year_display_str;
|
241
236
|
# need head-to-head testing with pub_year_display_str
|
242
|
-
# @return
|
237
|
+
# @return [String] value for the pub date facet
|
243
238
|
def pub_date_facet
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
if pub_date.include? '--'
|
249
|
-
cent = pub_date[0, 2].to_i
|
250
|
-
cent += 1
|
251
|
-
cent = cent.to_s + 'th century'
|
252
|
-
return cent
|
253
|
-
else
|
254
|
-
return pub_date
|
255
|
-
end
|
256
|
-
end
|
257
|
-
nil
|
239
|
+
return nil unless pub_date
|
240
|
+
return "#{pub_date.to_i + 1000} B.C." if pub_date.start_with?('-')
|
241
|
+
return pub_date unless pub_date.include? '--'
|
242
|
+
"#{pub_date[0, 2].to_i + 1}th century"
|
258
243
|
end
|
259
244
|
|
260
245
|
# creates a date suitable for sorting. Guarnteed to be 4 digits or nil
|
261
|
-
# @deprecated
|
246
|
+
# @deprecated use pub_year_int, or pub_year_sort_str if you must have a string (why?)
|
262
247
|
def pub_date_sort
|
263
248
|
if pub_date
|
264
249
|
pd = pub_date
|
@@ -272,14 +257,14 @@ module Stanford
|
|
272
257
|
# For the date display only, the first place to look is in the dates without encoding=marc array.
|
273
258
|
# If no such dates, select the first date in the dates_marc_encoding array. Otherwise return nil
|
274
259
|
# @return [String] value for the pub_date_display Solr field for this document or nil if none
|
275
|
-
# @deprecated
|
260
|
+
# @deprecated DO NOT USE: this is no longer used in SW, Revs or Spotlight Jan 2016
|
276
261
|
def pub_date_display
|
277
262
|
return dates_no_marc_encoding.first unless dates_no_marc_encoding.empty?
|
278
263
|
return dates_marc_encoding.first unless dates_marc_encoding.empty?
|
279
264
|
nil
|
280
265
|
end
|
281
266
|
|
282
|
-
#
|
267
|
+
# old date parsing protected methods to be deprecated/replaced with new methods (see also DateParsing)
|
283
268
|
|
284
269
|
protected
|
285
270
|
|
@@ -292,30 +277,23 @@ module Stanford
|
|
292
277
|
return @pub_year
|
293
278
|
end
|
294
279
|
|
295
|
-
dates = pub_dates
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
pruned_dates << f_date.tr('?', '0')
|
302
|
-
else
|
303
|
-
pruned_dates << f_date.delete('?[]')
|
304
|
-
end
|
280
|
+
dates = pub_dates.map do |f_date|
|
281
|
+
# remove ? and []
|
282
|
+
if f_date.length == 4 && f_date.end_with?('?')
|
283
|
+
f_date.tr('?', '0')
|
284
|
+
else
|
285
|
+
f_date.delete('?[]')
|
305
286
|
end
|
287
|
+
end
|
288
|
+
|
289
|
+
if dates
|
306
290
|
# try to find a date starting with the most normal date formats and progressing to more wonky ones
|
307
|
-
@pub_year = get_plain_four_digit_year
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
return @pub_year if @pub_year
|
314
|
-
@pub_year = get_bc_year pruned_dates
|
315
|
-
return @pub_year if @pub_year
|
316
|
-
@pub_year = get_three_digit_year pruned_dates
|
317
|
-
return @pub_year if @pub_year
|
318
|
-
@pub_year = get_single_digit_century pruned_dates
|
291
|
+
@pub_year = get_plain_four_digit_year(dates) ||
|
292
|
+
get_u_year(dates) || # Check for years in u notation, e.g., 198u
|
293
|
+
get_double_digit_century(dates) ||
|
294
|
+
get_bc_year(dates) ||
|
295
|
+
get_three_digit_year(dates) ||
|
296
|
+
get_single_digit_century(dates)
|
319
297
|
return @pub_year if @pub_year
|
320
298
|
end
|
321
299
|
@pub_year = ''
|
@@ -384,7 +362,6 @@ module Stanford
|
|
384
362
|
matches = f_date.scan(/\d{4}/)
|
385
363
|
if matches.length == 1
|
386
364
|
@pub_year = matches.first
|
387
|
-
return matches.first
|
388
365
|
else
|
389
366
|
# when there are multiple matches, check for ones with CE after them
|
390
367
|
matches.each do |match|
|
@@ -396,8 +373,8 @@ module Stanford
|
|
396
373
|
return match
|
397
374
|
end
|
398
375
|
end
|
399
|
-
return matches.first
|
400
376
|
end
|
377
|
+
return matches.first
|
401
378
|
end
|
402
379
|
nil
|
403
380
|
end
|
@@ -8,78 +8,56 @@ module Stanford
|
|
8
8
|
# Each method here expects to find at most ONE matching element. Subsequent potential matches
|
9
9
|
# are ignored.
|
10
10
|
class Record < ::Mods::Record
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
11
|
+
# data in location/physicalLocation or in relatedItem/location/physicalLocation
|
12
|
+
# so use _location to get the data from either one of them
|
13
|
+
# @return [String] box number (note: single valued and might be something like 35A)
|
14
|
+
# @todo should it be hierarchical series/box/folder?
|
15
15
|
def box
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
match_data[1].strip if match_data.present?
|
22
|
-
end.compact
|
23
|
-
|
24
|
-
# There should only be one box
|
25
|
-
box_num.first
|
16
|
+
mods_ng_xml._location.physicalLocation.each do |node|
|
17
|
+
match_data = node.text.match(/Box ?:? ?([^,|(Folder)]+)/i) # note that this will also find Flatbox or Flat-box
|
18
|
+
return match_data[1].strip if match_data.present?
|
19
|
+
end
|
20
|
+
nil
|
26
21
|
end
|
27
22
|
|
28
|
-
#
|
29
|
-
#
|
30
|
-
#
|
31
|
-
#
|
23
|
+
# data in location/physicalLocation or in relatedItem/location/physicalLocation
|
24
|
+
# so use _location to get the data from either one of them
|
25
|
+
# @return [String] folder number (note: single valued)
|
26
|
+
# @todo should it be hierarchical series/box/folder?
|
32
27
|
def folder
|
33
|
-
|
34
|
-
folder_num = @mods_ng_xml._location.physicalLocation.map do |node|
|
28
|
+
mods_ng_xml._location.physicalLocation.each do |node|
|
35
29
|
val = node.text
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
val.match(/Folder ?:? ?([^,]+)/)
|
43
|
-
end
|
44
|
-
|
45
|
-
match_data[1].strip if match_data.present?
|
46
|
-
end.compact
|
47
|
-
|
48
|
-
# There should be one folder
|
49
|
-
folder_num.first
|
30
|
+
match_data = val =~ /\|/ ?
|
31
|
+
val.match(/Folder ?:? ?([^|]+)/) : # expect pipe-delimited, may contain commas within values
|
32
|
+
val.match(/Folder ?:? ?([^,]+)/) # expect comma-delimited, may NOT contain commas within values
|
33
|
+
return match_data[1].strip if match_data.present?
|
34
|
+
end
|
35
|
+
nil
|
50
36
|
end
|
51
37
|
|
52
|
-
#
|
53
|
-
#
|
54
|
-
#
|
55
|
-
#
|
56
|
-
#
|
57
|
-
#
|
38
|
+
# but only if it has series, accession, box or folder data
|
39
|
+
# data in location/physicalLocation or in relatedItem/location/physicalLocation
|
40
|
+
# so use _location to get the data from either one of them
|
41
|
+
# @return [String] entire contents of physicalLocation as a string (note: single valued)
|
42
|
+
# @note there is a "physicalLocation" and a "location" method defined in the mods gem, so we cannot use these names to avoid conflicts
|
43
|
+
# @todo should it be hierarchical series/box/folder?
|
58
44
|
def physical_location_str
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
end.compact
|
63
|
-
|
64
|
-
# There should only be one location
|
65
|
-
loc.first
|
45
|
+
mods_ng_xml._location.physicalLocation.map(&:text).find do |text|
|
46
|
+
text =~ /.*(Series)|(Accession)|(Folder)|(Box).*/i
|
47
|
+
end
|
66
48
|
end
|
67
49
|
|
68
|
-
#
|
69
|
-
#
|
70
|
-
#
|
71
|
-
#
|
50
|
+
# data in location/physicalLocation or in relatedItem/location/physicalLocation
|
51
|
+
# so use _location to get the data from either one of them
|
52
|
+
# @return [String] series/accession 'number' (note: single valued)
|
53
|
+
# @todo should it be hierarchical series/box/folder?
|
72
54
|
def series
|
73
|
-
|
74
|
-
series_num = @mods_ng_xml._location.physicalLocation.map do |node|
|
75
|
-
val = node.text
|
55
|
+
mods_ng_xml._location.physicalLocation.each do |node|
|
76
56
|
# feigenbaum uses 'Accession'
|
77
|
-
match_data =
|
78
|
-
match_data[1].strip if match_data.present?
|
79
|
-
end
|
80
|
-
|
81
|
-
# There should be only one series
|
82
|
-
series_num.first
|
57
|
+
match_data = node.text.match(/(?:(?:Series)|(?:Accession)):? ([^,|]+)/i)
|
58
|
+
return match_data[1].strip if match_data.present?
|
59
|
+
end
|
60
|
+
nil
|
83
61
|
end
|
84
62
|
end # class Record
|
85
63
|
end # Module Mods
|
@@ -16,21 +16,15 @@ module Stanford
|
|
16
16
|
result = term_values([:subject, :geographic]) || []
|
17
17
|
|
18
18
|
# hierarchicalGeographic has sub elements
|
19
|
-
|
20
|
-
hg_vals =
|
21
|
-
hg_node.element_children.each { |e|
|
22
|
-
hg_vals << e.text unless e.text.empty?
|
23
|
-
}
|
19
|
+
mods_ng_xml.subject.hierarchicalGeographic.each { |hg_node|
|
20
|
+
hg_vals = hg_node.element_children.map(&:text).reject(&:empty?)
|
24
21
|
result << hg_vals.join(sep) unless hg_vals.empty?
|
25
22
|
}
|
26
23
|
|
27
|
-
trans_code_vals =
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
}
|
32
|
-
end
|
33
|
-
|
24
|
+
trans_code_vals = mods_ng_xml.subject.geographicCode.translated_value || []
|
25
|
+
trans_code_vals.each { |val|
|
26
|
+
result << val unless result.include?(val)
|
27
|
+
}
|
34
28
|
result
|
35
29
|
end
|
36
30
|
|
@@ -40,12 +34,11 @@ module Stanford
|
|
40
34
|
# @param [String] sep - the separator string for joining namePart sub elements
|
41
35
|
# @return [Array<String>] values for names inside subject elements or [] if none
|
42
36
|
def sw_subject_names(sep = ', ')
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
result
|
37
|
+
mods_ng_xml.subject.name_el
|
38
|
+
.select { |n_el| n_el.namePart }
|
39
|
+
.map { |name_el_w_np| name_el_w_np.namePart.map(&:text).reject(&:empty?) }
|
40
|
+
.reject(&:empty?)
|
41
|
+
.map { |parts| parts.join(sep).strip }
|
49
42
|
end
|
50
43
|
|
51
44
|
# Values are the contents of:
|
@@ -54,8 +47,8 @@ module Stanford
|
|
54
47
|
# @return [Array<String>] values for titles inside subject elements or [] if none
|
55
48
|
def sw_subject_titles(sep = ' ')
|
56
49
|
result = []
|
57
|
-
|
58
|
-
parts = ti_el.element_children.map
|
50
|
+
mods_ng_xml.subject.titleInfo.each { |ti_el|
|
51
|
+
parts = ti_el.element_children.map(&:text).reject(&:empty?)
|
59
52
|
result << parts.join(sep).strip unless parts.empty?
|
60
53
|
}
|
61
54
|
result
|
@@ -85,10 +78,7 @@ module Stanford
|
|
85
78
|
vals.concat(subject_names) if subject_names
|
86
79
|
vals.concat(subject_titles) if subject_titles
|
87
80
|
vals.concat(subject_occupations) if subject_occupations
|
88
|
-
vals.map! { |val|
|
89
|
-
v = val.sub(/[\\,;]$/, '')
|
90
|
-
v.strip
|
91
|
-
}
|
81
|
+
vals.map! { |val| val.sub(/[\\,;]$/, '').strip }
|
92
82
|
vals.empty? ? nil : vals
|
93
83
|
end
|
94
84
|
|
@@ -119,9 +109,8 @@ module Stanford
|
|
119
109
|
codes = term_values([:subject, :geographicCode])
|
120
110
|
if codes && codes.size > xvals.size
|
121
111
|
subject.geographicCode.each { |n|
|
122
|
-
|
123
|
-
|
124
|
-
end
|
112
|
+
next unless n.authority != 'marcgac' && n.authority != 'marccountry'
|
113
|
+
sw_logger.info("#{druid} has subject geographicCode element with untranslated encoding (#{n.authority}): #{n.to_xml}")
|
125
114
|
}
|
126
115
|
end
|
127
116
|
|
data/spec/geo_spatial_spec.rb
CHANGED
@@ -98,7 +98,7 @@ describe '#geo_extension_as_envelope' do
|
|
98
98
|
expect(mods.geo_extensions_as_envelope).to eq []
|
99
99
|
end
|
100
100
|
|
101
|
-
describe 'with data' do
|
101
|
+
describe 'with geo extension bounding-box data' do
|
102
102
|
let(:modsbody) do
|
103
103
|
<<-EOF
|
104
104
|
<extension displayLabel="geo">
|
@@ -128,4 +128,28 @@ describe '#geo_extension_as_envelope' do
|
|
128
128
|
expect(mods.geo_extensions_as_envelope).to eq ["ENVELOPE(-122.191292, -122.149475, 37.4435369, 37.4063388)"]
|
129
129
|
end
|
130
130
|
end
|
131
|
+
|
132
|
+
describe 'with geo-extension point data' do
|
133
|
+
let(:modsbody) do
|
134
|
+
<<-EOF
|
135
|
+
<extension displayLabel="geo">
|
136
|
+
<rdf:RDF xmlns:gml="http://www.opengis.net/gml/3.2/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:gmd="http://www.isotc211.org/2005/gmd">
|
137
|
+
<rdf:Description rdf:about="http://www.stanford.edu/cm896kp1291">
|
138
|
+
<dc:format>image/jpeg</dc:format>
|
139
|
+
<dc:type>Image</dc:type>
|
140
|
+
<gmd:centerPoint>
|
141
|
+
<gml:Point gml:id="ID">
|
142
|
+
<gml:pos>41.8898687280593 12.4913412520789</gml:pos>
|
143
|
+
</gml:Point>
|
144
|
+
</gmd:centerPoint>
|
145
|
+
</rdf:Description>
|
146
|
+
</rdf:RDF>
|
147
|
+
</extension>
|
148
|
+
EOF
|
149
|
+
end
|
150
|
+
|
151
|
+
it 'extract point strings' do
|
152
|
+
expect(mods.geo_extensions_point_data).to eq ["12.4913412520789 41.8898687280593"]
|
153
|
+
end
|
154
|
+
end
|
131
155
|
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: 2.
|
4
|
+
version: 2.4.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: 2017-01-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mods
|
@@ -177,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
177
177
|
version: '0'
|
178
178
|
requirements: []
|
179
179
|
rubyforge_project:
|
180
|
-
rubygems_version: 2.5.
|
180
|
+
rubygems_version: 2.5.2
|
181
181
|
signing_key:
|
182
182
|
specification_version: 4
|
183
183
|
summary: Stanford specific wrangling of MODS metadata
|