mods 3.0.0 → 3.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|