mods 3.0.0 → 3.0.3
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/lib/mods/date.rb +15 -8
- data/lib/mods/version.rb +1 -1
- data/spec/lib/date_spec.rb +5 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f6ac4089b58e673c2783c670e689cb6901bbad611a7271c95f1f8909726beb07
|
4
|
+
data.tar.gz: ee1ee35aeae21d319485212f56535e4bc06068470295f5adcf3ff8593a06c9d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 553a4d9e91f50357ff56b5e2c19404386852308c30f06f67ccf6baa586f74f3f4bdbfd05826d3225aac8a0793bdccd5049994e5df04ef691a86c7777a21e554c
|
7
|
+
data.tar.gz: a496b63bef0f1b512d0e3c87886ee80b6665dd90044387d5ce318cc2471d855fcac64839d7d95e9bca75ca1705d786ee0b6220e254b10d31fa32a79768521d66
|
data/lib/mods/date.rb
CHANGED
@@ -56,6 +56,9 @@ module Mods
|
|
56
56
|
|
57
57
|
# Less strict W3CDTF-encoded date parser
|
58
58
|
class W3cdtfFormat < Date
|
59
|
+
def self.normalize_to_edtf(text)
|
60
|
+
super.gsub('-00', '')
|
61
|
+
end
|
59
62
|
end
|
60
63
|
|
61
64
|
# Strict EDTF parser
|
@@ -180,7 +183,7 @@ module Mods
|
|
180
183
|
|
181
184
|
def self.munge_to_yyyy(text)
|
182
185
|
value = roman_to_int(text.upcase)
|
183
|
-
(value - 1).to_s.rjust(2, "0") + '
|
186
|
+
(value - 1).to_s.rjust(2, "0") + 'xx'
|
184
187
|
end
|
185
188
|
end
|
186
189
|
|
@@ -191,7 +194,7 @@ module Mods
|
|
191
194
|
REGEX = /(?<century>\d{2})--/
|
192
195
|
def self.normalize_to_edtf(text)
|
193
196
|
matches = text.match(REGEX)
|
194
|
-
"#{matches[:century]}
|
197
|
+
"#{matches[:century]}xx"
|
195
198
|
end
|
196
199
|
end
|
197
200
|
|
@@ -201,7 +204,7 @@ module Mods
|
|
201
204
|
|
202
205
|
def self.normalize_to_edtf(text)
|
203
206
|
matches = text.match(REGEX)
|
204
|
-
"#{matches[:century].to_i - 1}
|
207
|
+
"#{matches[:century].to_i - 1}xx"
|
205
208
|
end
|
206
209
|
end
|
207
210
|
|
@@ -221,7 +224,7 @@ module Mods
|
|
221
224
|
|
222
225
|
def self.normalize_to_edtf(text)
|
223
226
|
matches = text.match(REGEX)
|
224
|
-
"#{matches[:year]}
|
227
|
+
"#{matches[:year]}x"
|
225
228
|
end
|
226
229
|
end
|
227
230
|
|
@@ -231,7 +234,7 @@ module Mods
|
|
231
234
|
|
232
235
|
def self.normalize_to_edtf(text)
|
233
236
|
matches = text.match(REGEX)
|
234
|
-
"#{matches[:year]}
|
237
|
+
"#{matches[:year]}x"
|
235
238
|
end
|
236
239
|
end
|
237
240
|
|
@@ -457,6 +460,10 @@ module Mods
|
|
457
460
|
:century
|
458
461
|
elsif date_range.is_a? EDTF::Decade
|
459
462
|
:decade
|
463
|
+
elsif date.is_a? EDTF::Season
|
464
|
+
:month
|
465
|
+
elsif date.is_a? EDTF::Interval
|
466
|
+
date_range.precision
|
460
467
|
else
|
461
468
|
case date.precision
|
462
469
|
when :month
|
@@ -492,7 +499,7 @@ module Mods
|
|
492
499
|
case date_range
|
493
500
|
when EDTF::Unknown
|
494
501
|
nil
|
495
|
-
when EDTF::Epoch, EDTF::Interval
|
502
|
+
when EDTF::Epoch, EDTF::Interval, EDTF::Season
|
496
503
|
date_range.min
|
497
504
|
when EDTF::Set
|
498
505
|
date_range.to_a.first
|
@@ -517,7 +524,7 @@ module Mods
|
|
517
524
|
case date_range
|
518
525
|
when EDTF::Unknown
|
519
526
|
nil
|
520
|
-
when EDTF::Epoch, EDTF::Interval
|
527
|
+
when EDTF::Epoch, EDTF::Interval, EDTF::Season
|
521
528
|
date_range.max
|
522
529
|
when EDTF::Set
|
523
530
|
date_range.to_a.last.change(month: 12, day: 31)
|
@@ -533,7 +540,7 @@ module Mods
|
|
533
540
|
|
534
541
|
def date_range
|
535
542
|
@date_range ||= if text =~ /u/
|
536
|
-
::Date.edtf(text.gsub('u', 'X')) || date
|
543
|
+
::Date.edtf(text.gsub('u', 'x').gsub('X', 'x')) || date
|
537
544
|
else
|
538
545
|
date
|
539
546
|
end
|
data/lib/mods/version.rb
CHANGED
data/spec/lib/date_spec.rb
CHANGED
@@ -101,6 +101,8 @@ RSpec.describe Mods::Date do
|
|
101
101
|
'1900-06' => :month,
|
102
102
|
'1900-06-uu' => :month,
|
103
103
|
'1900-06-15' => :day,
|
104
|
+
'2014-01-01/2020-12-31' => :day,
|
105
|
+
'1986-22' => :month
|
104
106
|
}.each do |data, expected|
|
105
107
|
describe "with #{data}" do
|
106
108
|
let(:date_element) { "<dateCreated encoding=\"edtf\">#{data}</dateCreated>" }
|
@@ -200,9 +202,9 @@ RSpec.describe Mods::Date do
|
|
200
202
|
{
|
201
203
|
'1905' => Date.parse('1905-01-01')..Date.parse('1905-12-31'),
|
202
204
|
'190u' => Date.parse('1900-01-01')..Date.parse('1909-12-31'),
|
203
|
-
'
|
205
|
+
'190x' => Date.parse('1900-01-01')..Date.parse('1909-12-31'),
|
204
206
|
'19uu' => Date.parse('1900-01-01')..Date.parse('1999-12-31'),
|
205
|
-
'
|
207
|
+
'19xx' => Date.parse('1900-01-01')..Date.parse('1999-12-31'),
|
206
208
|
'1856/1876' => Date.parse('1856-01-01')..Date.parse('1876-12-31'),
|
207
209
|
'[1667,1668,1670..1672]' => Date.parse('1667-01-01')..Date.parse('1672-12-31'),
|
208
210
|
'1900-uu' => Date.parse('1900-01-01')..Date.parse('1900-12-31'),
|
@@ -229,6 +231,7 @@ RSpec.describe Mods::Date do
|
|
229
231
|
{
|
230
232
|
'1753' => Date.parse('1753-01-01')..Date.parse('1753-12-31'),
|
231
233
|
'-1753' => Date.parse('-1753-01-01')..Date.parse('-1753-12-31'),
|
234
|
+
'1992-00-00' => Date.parse('1992-01-01')..Date.parse('1992-12-31'),
|
232
235
|
'1992-05-06' => Date.parse('1992-05-06')..Date.parse('1992-05-06'),
|
233
236
|
'1992-04' => Date.parse('1992-04-01')..Date.parse('1992-04-30'),
|
234
237
|
'2004-02' => Date.parse('2004-02-01')..Date.parse('2004-02-29'),
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mods
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.3
|
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: 2022-
|
12
|
+
date: 2022-07-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|