edtf 2.1.0 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -2
- data/Gemfile +8 -3
- data/README.md +8 -8
- data/features/parser/date_times.feature +3 -3
- data/features/print/level_0_edtf.feature +61 -61
- data/features/step_definitions/edtf_steps.rb +25 -25
- data/features/support/env.rb +1 -1
- data/lib/edtf/date.rb +6 -3
- data/lib/edtf/date_time.rb +10 -1
- data/lib/edtf/parser.rb +344 -343
- data/lib/edtf/parser.y +29 -28
- data/lib/edtf/set.rb +3 -1
- data/lib/edtf/version.rb +1 -1
- data/spec/edtf/date_spec.rb +39 -39
- data/spec/edtf/epoch_spec.rb +15 -15
- data/spec/edtf/interval_spec.rb +35 -35
- data/spec/edtf/parser_spec.rb +123 -123
- data/spec/edtf/season_spec.rb +22 -21
- data/spec/edtf/set_spec.rb +71 -71
- data/spec/edtf/uncertainty_spec.rb +42 -42
- data/spec/spec_helper.rb +1 -1
- metadata +5 -4
data/spec/edtf/epoch_spec.rb
CHANGED
@@ -4,56 +4,56 @@ module EDTF
|
|
4
4
|
|
5
5
|
describe Decade do
|
6
6
|
|
7
|
-
it {
|
7
|
+
it { is_expected.not_to be nil }
|
8
8
|
|
9
9
|
describe '.current' do
|
10
10
|
it 'creates the current decade' do
|
11
|
-
Decade.current.year.
|
11
|
+
expect(Decade.current.year).to eq((Time.now.year / 10) * 10)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
15
|
describe '#min' do
|
16
16
|
it 'the year 1990 should be the minimum of the 1990s' do
|
17
|
-
Decade.new(1999).min.
|
17
|
+
expect(Decade.new(1999).min).to eq(Date.new(1990).year_precision!)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
describe '#max' do
|
22
22
|
it 'the year 1999 should be the maximum of the 1990s' do
|
23
|
-
Decade.new(1999).max.
|
23
|
+
expect(Decade.new(1999).max).to eq(Date.new(1999).year_precision!)
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'has year precision' do
|
27
|
-
Decade.new(1999).max.
|
27
|
+
expect(Decade.new(1999).max).to be_year_precision
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
31
|
describe '#cover?' do
|
32
32
|
it '1989-12-31 should be covered by the 1980s' do
|
33
|
-
Decade.new(1980).
|
33
|
+
expect(Decade.new(1980)).to be_cover(Date.new(1989,12,31))
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
37
|
describe '#to_range' do
|
38
38
|
|
39
39
|
it 'returns a range' do
|
40
|
-
Decade.new.to_range.
|
40
|
+
expect(Decade.new.to_range).to be_instance_of(::Range)
|
41
41
|
end
|
42
42
|
|
43
43
|
it 'the range starts with a date object' do
|
44
|
-
Decade.new.to_range.begin.
|
44
|
+
expect(Decade.new.to_range.begin).to be_instance_of(::Date)
|
45
45
|
end
|
46
46
|
|
47
47
|
it 'the range ends with a date object' do
|
48
|
-
Decade.new.to_range.end.
|
48
|
+
expect(Decade.new.to_range.end).to be_instance_of(::Date)
|
49
49
|
end
|
50
50
|
|
51
51
|
it 'the range start has year precision' do
|
52
|
-
Decade.new.to_range.begin.
|
52
|
+
expect(Decade.new.to_range.begin).to be_year_precision
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'the range end has year precision' do
|
56
|
-
Decade.new.to_range.end.
|
56
|
+
expect(Decade.new.to_range.end).to be_year_precision
|
57
57
|
end
|
58
58
|
|
59
59
|
end
|
@@ -61,11 +61,11 @@ module EDTF
|
|
61
61
|
describe 'enumeration' do
|
62
62
|
|
63
63
|
it 'always covers ten years' do
|
64
|
-
Decade.new.to_a.
|
64
|
+
expect(Decade.new.to_a.size).to eq(10)
|
65
65
|
end
|
66
66
|
|
67
67
|
it 'the 1970s should map to the years [1970, 1971, ... , 1979]' do
|
68
|
-
Decade.new(1970).map(&:year).
|
68
|
+
expect(Decade.new(1970).map(&:year)).to eq([1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979])
|
69
69
|
end
|
70
70
|
|
71
71
|
end
|
@@ -74,11 +74,11 @@ module EDTF
|
|
74
74
|
|
75
75
|
describe Century do
|
76
76
|
|
77
|
-
it {
|
77
|
+
it { is_expected.not_to be nil }
|
78
78
|
|
79
79
|
describe '.current' do
|
80
80
|
it 'creates the current century' do
|
81
|
-
Century.current.year.
|
81
|
+
expect(Century.current.year).to eq((Time.now.year / 100) * 100)
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
data/spec/edtf/interval_spec.rb
CHANGED
@@ -4,58 +4,58 @@ module EDTF
|
|
4
4
|
describe 'the interval 2008/2011' do
|
5
5
|
let(:interval) { Date.edtf('2008/2011') }
|
6
6
|
|
7
|
-
it { interval.
|
8
|
-
it { interval.
|
9
|
-
it { interval.
|
10
|
-
it { interval.
|
7
|
+
it { expect(interval).not_to be_open }
|
8
|
+
it { expect(interval).not_to be_open_end }
|
9
|
+
it { expect(interval).not_to be_unknown_start }
|
10
|
+
it { expect(interval).not_to be_unknown_end }
|
11
11
|
|
12
12
|
it 'has a length of 4' do
|
13
|
-
interval.to_a.length.
|
13
|
+
expect(interval.to_a.length).to eq(4)
|
14
14
|
end
|
15
15
|
|
16
16
|
it '#step(2) yields the years 2008 and 2010' do
|
17
|
-
interval.step(2).map(&:year).
|
17
|
+
expect(interval.step(2).map(&:year)).to eq([2008,2010])
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'the max date is 2011-12-31' do
|
21
|
-
interval.max.to_s.
|
21
|
+
expect(interval.max.to_s).to eq('2011-12-31')
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'the max date has year precision' do
|
25
|
-
interval.max.
|
25
|
+
expect(interval.max).to be_year_precision
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'the min date is 2008-01-01' do
|
29
|
-
interval.min.to_s.
|
29
|
+
expect(interval.min.to_s).to eq('2008-01-01')
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'the min date has year precision' do
|
33
|
-
interval.min.
|
33
|
+
expect(interval.min).to be_year_precision
|
34
34
|
end
|
35
35
|
|
36
36
|
|
37
37
|
it 'includes the years 2008, 2009, 2010 and 2011' do
|
38
|
-
interval.to_a.map(&:year).
|
38
|
+
expect(interval.to_a.map(&:year)).to eq([2008, 2009, 2010, 2011])
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'does not include christmas day 2009' do
|
42
|
-
interval.
|
42
|
+
expect(interval).not_to be_include(Date.new(2009,12,24))
|
43
43
|
end
|
44
44
|
|
45
45
|
it 'christmas day 2009 is less than max' do
|
46
|
-
Date.new(2009,12,24).
|
46
|
+
expect(Date.new(2009,12,24)).to be < interval.max
|
47
47
|
end
|
48
48
|
|
49
49
|
it 'christmas day 2009 is greater than min' do
|
50
|
-
Date.new(2009,12,24).
|
50
|
+
expect(Date.new(2009,12,24)).to be > interval.min
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'covers christmas day 2009' do
|
54
|
-
interval.
|
54
|
+
expect(interval).to be_cover(Date.new(2009,12,24))
|
55
55
|
end
|
56
56
|
|
57
57
|
it 'covers 2011-12-31' do
|
58
|
-
interval.
|
58
|
+
expect(interval).to be_cover(Date.new(2011,12,31))
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
@@ -63,72 +63,72 @@ module EDTF
|
|
63
63
|
let(:interval) { Date.edtf('2008-08-23/2011-07-01') }
|
64
64
|
|
65
65
|
it 'includes christmas day 2009' do
|
66
|
-
interval.
|
66
|
+
expect(interval).to be_include(Date.new(2009,12,24))
|
67
67
|
end
|
68
68
|
|
69
69
|
it 'covers christmas day 2009' do
|
70
|
-
interval.
|
70
|
+
expect(interval).to be_cover(Date.new(2009,12,24))
|
71
71
|
end
|
72
72
|
|
73
73
|
it 'does not cover 2011-07-02' do
|
74
|
-
interval.
|
74
|
+
expect(interval).not_to be_cover(Date.new(2011,07,02))
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
78
|
describe 'the interval 2008-08-23/open' do
|
79
79
|
let(:interval) { Date.edtf('2008-08-23/open') }
|
80
80
|
|
81
|
-
it { interval.
|
82
|
-
it { interval.
|
83
|
-
it { interval.
|
84
|
-
it { interval.
|
85
|
-
it { interval.
|
81
|
+
it { expect(interval).to be_open }
|
82
|
+
it { expect(interval).to be_open_end }
|
83
|
+
it { expect(interval).not_to be_unknown }
|
84
|
+
it { expect(interval).not_to be_unknown_start }
|
85
|
+
it { expect(interval).not_to be_unknown_end }
|
86
86
|
|
87
87
|
it 'the min date is 2008-08-23' do
|
88
|
-
interval.min.
|
88
|
+
expect(interval.min).to eq(Date.new(2008,8,23))
|
89
89
|
end
|
90
90
|
|
91
91
|
it 'the max date is nil' do
|
92
|
-
interval.max.
|
92
|
+
expect(interval.max).to be nil
|
93
93
|
end
|
94
94
|
|
95
95
|
it 'includes christmas day 2009' do
|
96
|
-
interval.
|
96
|
+
expect(interval).to be_include(Date.new(2009,12,24))
|
97
97
|
end
|
98
98
|
|
99
99
|
it 'covers christmas day 2009' do
|
100
|
-
interval.
|
100
|
+
expect(interval).to be_cover(Date.new(2009,12,24))
|
101
101
|
end
|
102
102
|
|
103
103
|
it 'covers 2023-07-02' do
|
104
|
-
interval.
|
104
|
+
expect(interval).to be_cover(Date.new(2023,07,02))
|
105
105
|
end
|
106
106
|
|
107
107
|
end
|
108
108
|
|
109
109
|
describe 'comparisions' do
|
110
110
|
it '2007/2009 should be greater than 2001/2002' do
|
111
|
-
Date.edtf('2007/2009').
|
111
|
+
expect(Date.edtf('2007/2009')).to be > Date.edtf('2001/2002')
|
112
112
|
end
|
113
113
|
|
114
114
|
it '2007/2009 should be less than 2011/2012' do
|
115
|
-
Date.edtf('2007/2009').
|
115
|
+
expect(Date.edtf('2007/2009')).to be < Date.edtf('2011/2012')
|
116
116
|
end
|
117
117
|
|
118
118
|
it '2007/2009 should be less than 2008/2009' do
|
119
|
-
Date.edtf('2007/2009').
|
119
|
+
expect(Date.edtf('2007/2009')).to be < Date.edtf('2008/2009')
|
120
120
|
end
|
121
121
|
|
122
122
|
it '2007/2009 should be greater than 2007/2008' do
|
123
|
-
Date.edtf('2007/2009').
|
123
|
+
expect(Date.edtf('2007/2009')).to be > Date.edtf('2007/2008')
|
124
124
|
end
|
125
125
|
|
126
126
|
it '2007/2009 should be greater than 2006/2007' do
|
127
|
-
Date.edtf('2007/2009').
|
127
|
+
expect(Date.edtf('2007/2009')).to be > Date.edtf('2006/2007')
|
128
128
|
end
|
129
129
|
|
130
130
|
it '2007/2009 should be equal to 2007/2009' do
|
131
|
-
Date.edtf('2007/2009').
|
131
|
+
expect(Date.edtf('2007/2009')).to eq(Date.edtf('2007/2009'))
|
132
132
|
end
|
133
133
|
end
|
134
134
|
|
data/spec/edtf/parser_spec.rb
CHANGED
@@ -3,349 +3,349 @@ module EDTF
|
|
3
3
|
describe '#parse' do
|
4
4
|
|
5
5
|
it 'parses simple dates "2001-02-03"' do
|
6
|
-
Parser.new.parse('2001-02-03').to_s.
|
6
|
+
expect(Parser.new.parse('2001-02-03').to_s).to eq('2001-02-03')
|
7
7
|
end
|
8
8
|
|
9
9
|
it 'parses negative years' do
|
10
|
-
Parser.new.parse('-2323').to_s.
|
10
|
+
expect(Parser.new.parse('-2323').to_s).to eq('-2323-01-01')
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'parses the negative year -2101 and sets the precision to :year' do
|
14
|
-
Parser.new.parse('-2101').
|
14
|
+
expect(Parser.new.parse('-2101')).to be_year_precision
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'parses year zero' do
|
18
|
-
Parser.new.parse('0000').to_s.
|
18
|
+
expect(Parser.new.parse('0000').to_s).to eq('0000-01-01')
|
19
19
|
end
|
20
20
|
|
21
21
|
it 'parses date/time with time zones' do
|
22
|
-
Parser.new.parse('2011-08-15T11:19:00+01:00').to_s.
|
22
|
+
expect(Parser.new.parse('2011-08-15T11:19:00+01:00').to_s).to eq('2011-08-15T11:19:00+01:00')
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'parses simple intervals like "2007/2008"' do
|
26
|
-
Parser.new.parse('2007/2008').
|
26
|
+
expect(Parser.new.parse('2007/2008')).to be_a(Interval)
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'parses uncertain dates' do
|
30
|
-
Parser.new.parse('1984?').
|
31
|
-
Parser.new.parse('1984').
|
30
|
+
expect(Parser.new.parse('1984?')).to be_uncertain
|
31
|
+
expect(Parser.new.parse('1984')).to be_certain
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'parses uncertain dates (day precision)' do
|
35
|
-
Parser.new.parse('1984-11-23?').
|
36
|
-
Parser.new.parse('1984-11-23').
|
35
|
+
expect(Parser.new.parse('1984-11-23?')).to be_uncertain
|
36
|
+
expect(Parser.new.parse('1984-11-23')).to be_certain
|
37
37
|
end
|
38
38
|
|
39
39
|
it 'parses approximate dates' do
|
40
|
-
Parser.new.parse('1984-01~').
|
41
|
-
Parser.new.parse('1984-01').
|
40
|
+
expect(Parser.new.parse('1984-01~')).to be_approximate
|
41
|
+
expect(Parser.new.parse('1984-01')).to be_precise
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'parses uncertain approximate dates' do
|
45
|
-
Parser.new.parse('1984?~').
|
46
|
-
Parser.new.parse('1984?~').
|
45
|
+
expect(Parser.new.parse('1984?~')).to be_uncertain
|
46
|
+
expect(Parser.new.parse('1984?~')).to be_approximate
|
47
47
|
end
|
48
48
|
|
49
49
|
it 'parses unspecified dates' do
|
50
|
-
Parser.new.parse('199u').
|
51
|
-
Parser.new.parse('1999-uu-uu').
|
50
|
+
expect(Parser.new.parse('199u')).to be_unspecified
|
51
|
+
expect(Parser.new.parse('1999-uu-uu')).to be_unspecified
|
52
52
|
end
|
53
53
|
|
54
54
|
it 'parses open intervals' do
|
55
|
-
Parser.new.parse('2004-01-01/open').
|
55
|
+
expect(Parser.new.parse('2004-01-01/open')).to be_open
|
56
56
|
end
|
57
57
|
|
58
58
|
it 'parses unknown intervals' do
|
59
|
-
Parser.new.parse('2004-01-01/unknown').
|
60
|
-
Parser.new.parse('unknown/2004-01-01').
|
59
|
+
expect(Parser.new.parse('2004-01-01/unknown')).to be_unknown_end
|
60
|
+
expect(Parser.new.parse('unknown/2004-01-01')).to be_unknown_start
|
61
61
|
end
|
62
62
|
|
63
63
|
it 'parses intervals with uncertain or approximate dates' do
|
64
|
-
Parser.new.parse('1984-06-02?/2004-08-08~').from.
|
65
|
-
Parser.new.parse('1984-06-02?/2004-08-08~').to.
|
64
|
+
expect(Parser.new.parse('1984-06-02?/2004-08-08~').from).to be_uncertain
|
65
|
+
expect(Parser.new.parse('1984-06-02?/2004-08-08~').to).to be_approximate
|
66
66
|
end
|
67
67
|
|
68
68
|
it 'parses positive long years' do
|
69
|
-
Parser.new.parse('y170000002').year.
|
69
|
+
expect(Parser.new.parse('y170000002').year).to eq(170000002)
|
70
70
|
end
|
71
71
|
|
72
72
|
it 'parses negative long years' do
|
73
|
-
Parser.new.parse('y-170000002').year.
|
73
|
+
expect(Parser.new.parse('y-170000002').year).to eq(-170000002)
|
74
74
|
end
|
75
75
|
|
76
76
|
it 'parses season codes' do
|
77
|
-
Parser.new.parse('2003-23').
|
77
|
+
expect(Parser.new.parse('2003-23')).to be_autumn
|
78
78
|
end
|
79
79
|
|
80
80
|
it 'parses calendar names' do
|
81
|
-
Parser.new.parse('2001-02-03^xyz').calendar.
|
81
|
+
expect(Parser.new.parse('2001-02-03^xyz').calendar).to eq('xyz')
|
82
82
|
end
|
83
83
|
|
84
84
|
it 'parses season qualifiers' do
|
85
85
|
d = Parser.new.parse('2003-23^european')
|
86
|
-
d.
|
87
|
-
d.
|
88
|
-
d.qualifier.
|
86
|
+
expect(d).to be_autumn
|
87
|
+
expect(d).to be_qualified
|
88
|
+
expect(d.qualifier).to eq('european')
|
89
89
|
end
|
90
90
|
|
91
91
|
it 'parses uncertain seasons' do
|
92
|
-
Parser.new.parse!('2003-23?').
|
92
|
+
expect(Parser.new.parse!('2003-23?')).to be_uncertain
|
93
93
|
end
|
94
94
|
|
95
95
|
it 'parses approximate seasons' do
|
96
|
-
Parser.new.parse!('2003-23~').
|
96
|
+
expect(Parser.new.parse!('2003-23~')).to be_approximate
|
97
97
|
end
|
98
98
|
|
99
99
|
it 'parses uncertain and approximate seasons' do
|
100
|
-
Parser.new.parse!('2003-23?~').
|
101
|
-
Parser.new.parse!('2003-23?~').
|
100
|
+
expect(Parser.new.parse!('2003-23?~')).to be_uncertain
|
101
|
+
expect(Parser.new.parse!('2003-23?~')).to be_approximate
|
102
102
|
end
|
103
103
|
|
104
104
|
|
105
105
|
it 'parses positive scientific long years' do
|
106
|
-
Parser.new.parse('y17e7').year.
|
106
|
+
expect(Parser.new.parse('y17e7').year).to eq(170000000)
|
107
107
|
end
|
108
108
|
|
109
109
|
it 'parses negative scientific long years' do
|
110
|
-
Parser.new.parse('y-17e7').year.
|
110
|
+
expect(Parser.new.parse('y-17e7').year).to eq(-170000000)
|
111
111
|
end
|
112
112
|
|
113
113
|
it 'parses masked precision date strings (decades)' do
|
114
114
|
d = Parser.new.parse!('198x')
|
115
|
-
d.
|
116
|
-
d.
|
115
|
+
expect(d).to be_cover(Date.new(1983,3,12))
|
116
|
+
expect(d).not_to be_cover(Date.new(1990,1,1))
|
117
117
|
end
|
118
118
|
|
119
119
|
it 'parses masked precision date strings (centuries)' do
|
120
120
|
d = Parser.new.parse!('18xx')
|
121
|
-
d.
|
122
|
-
d.
|
121
|
+
expect(d).to be_cover(Date.new(1848,1,14))
|
122
|
+
expect(d).not_to be_cover(Date.new(1799,12,31))
|
123
123
|
end
|
124
124
|
|
125
125
|
it 'parses multiple dates (years)' do
|
126
126
|
d = Parser.new.parse!('{1667,1668, 1670..1672}')
|
127
|
-
d.map(&:year).
|
127
|
+
expect(d.map(&:year)).to eq([1667,1668,1670,1671,1672])
|
128
128
|
end
|
129
129
|
|
130
130
|
it 'parses multiple dates (mixed years and months)' do
|
131
131
|
d = Parser.new.parse!('{1960, 1961-12}')
|
132
|
-
d.map { |x| [x.year,x.month] }.
|
132
|
+
expect(d.map { |x| [x.year,x.month] }).to eq([[1960,1],[1961,12]])
|
133
133
|
end
|
134
134
|
|
135
135
|
it 'parses choice lists (One of the years 1667, 1668, 1670, 1671, 1672)' do
|
136
136
|
d = Parser.new.parse!('[1667,1668, 1670..1672]')
|
137
|
-
d.map(&:year).
|
137
|
+
expect(d.map(&:year)).to eq([1667,1668,1670,1671,1672])
|
138
138
|
end
|
139
139
|
|
140
140
|
it 'parses choice lists (December 3, 1760 or some earlier date)' do
|
141
141
|
d = Parser.new.parse!('[..1760-12-03]')
|
142
|
-
d.map(&:to_s).
|
142
|
+
expect(d.map(&:to_s)).to eq(['1760-12-03'])
|
143
143
|
end
|
144
144
|
|
145
145
|
it 'parses choice lists (December 1760 or some later month)' do
|
146
146
|
d = Parser.new.parse!('[1760-12..]')
|
147
|
-
d.map { |x| [x.year,x.month] }.
|
147
|
+
expect(d.map { |x| [x.year,x.month] }).to eq([[1760,12]])
|
148
148
|
end
|
149
149
|
|
150
150
|
it 'parses choice lists (January or February of 1760 or December 1760 or some later month)' do
|
151
151
|
d = Parser.new.parse!('[1760-01, 1760-02, 1760-12..]')
|
152
|
-
d.length.
|
152
|
+
expect(d.length).to eq(3)
|
153
153
|
end
|
154
154
|
|
155
155
|
it 'parses intern unspecified "199u-01-01"' do
|
156
|
-
Parser.new.parse!('199u-01-01').unspecified.to_s.
|
156
|
+
expect(Parser.new.parse!('199u-01-01').unspecified.to_s).to eq('sssu-ss-ss')
|
157
157
|
end
|
158
158
|
|
159
159
|
it 'parses intern unspecified "19uu-01-01"' do
|
160
|
-
Parser.new.parse!('19uu-01-01').unspecified.to_s.
|
160
|
+
expect(Parser.new.parse!('19uu-01-01').unspecified.to_s).to eq('ssuu-ss-ss')
|
161
161
|
end
|
162
162
|
|
163
163
|
it 'parses intern unspecified "199u-uu-01"' do
|
164
|
-
Parser.new.parse!('199u-uu-01').unspecified.to_s.
|
164
|
+
expect(Parser.new.parse!('199u-uu-01').unspecified.to_s).to eq('sssu-uu-ss')
|
165
165
|
end
|
166
166
|
|
167
167
|
it 'parses intern unspecified "19uu-uu-01"' do
|
168
|
-
Parser.new.parse!('19uu-uu-01').unspecified.to_s.
|
168
|
+
expect(Parser.new.parse!('19uu-uu-01').unspecified.to_s).to eq('ssuu-uu-ss')
|
169
169
|
end
|
170
170
|
|
171
171
|
it 'parses intern unspecified "199u-uu-uu"' do
|
172
|
-
Parser.new.parse!('199u-uu-uu').unspecified.to_s.
|
172
|
+
expect(Parser.new.parse!('199u-uu-uu').unspecified.to_s).to eq('sssu-uu-uu')
|
173
173
|
end
|
174
174
|
|
175
175
|
it 'parses intern unspecified "19uu-uu-uu"' do
|
176
|
-
Parser.new.parse!('19uu-uu-uu').unspecified.to_s.
|
176
|
+
expect(Parser.new.parse!('19uu-uu-uu').unspecified.to_s).to eq('ssuu-uu-uu')
|
177
177
|
end
|
178
178
|
|
179
179
|
it 'parses intern unspecified "199u-01-uu"' do
|
180
|
-
Parser.new.parse!('199u-01-uu').unspecified.to_s.
|
180
|
+
expect(Parser.new.parse!('199u-01-uu').unspecified.to_s).to eq('sssu-ss-uu')
|
181
181
|
end
|
182
182
|
|
183
183
|
it 'parses intern unspecified "19uu-01-uu"' do
|
184
|
-
Parser.new.parse!('19uu-01-uu').unspecified.to_s.
|
184
|
+
expect(Parser.new.parse!('19uu-01-uu').unspecified.to_s).to eq('ssuu-ss-uu')
|
185
185
|
end
|
186
186
|
|
187
187
|
it 'parses intern unspecified "1999-uu-01"' do
|
188
|
-
Parser.new.parse!('1999-uu-01').unspecified.to_s.
|
188
|
+
expect(Parser.new.parse!('1999-uu-01').unspecified.to_s).to eq('ssss-uu-ss')
|
189
189
|
end
|
190
190
|
|
191
191
|
it 'parses intern unspecified "2004-06-uu"' do
|
192
|
-
Parser.new.parse!('2004-06-uu').unspecified.to_s.
|
192
|
+
expect(Parser.new.parse!('2004-06-uu').unspecified.to_s).to eq('ssss-ss-uu')
|
193
193
|
end
|
194
194
|
|
195
195
|
|
196
196
|
it 'parses internal unspecified interval "2004-06-uu/2004-07-03"' do
|
197
|
-
Parser.new.parse!('2004-06-uu/2004-07-03').from.
|
197
|
+
expect(Parser.new.parse!('2004-06-uu/2004-07-03').from).to eq(Date.new(2004,6,1))
|
198
198
|
end
|
199
199
|
|
200
200
|
it 'parses "2004?-06-11": uncertain year; month, day known' do
|
201
201
|
d = Parser.new.parse!('2004?-06-11')
|
202
|
-
d.uncertain?(:year).
|
203
|
-
d.uncertain?([:month, :day]).
|
202
|
+
expect(d.uncertain?(:year)).to be true
|
203
|
+
expect(d.uncertain?([:month, :day])).to be false
|
204
204
|
end
|
205
205
|
|
206
206
|
it 'parses "2004-06~-11": year and month are approximate; day known' do
|
207
207
|
d = Parser.new.parse!('2004-06~-11')
|
208
|
-
d.approximate?(:year).
|
209
|
-
d.approximate?(:month).
|
210
|
-
d.approximate?(:day).
|
208
|
+
expect(d.approximate?(:year)).to be true
|
209
|
+
expect(d.approximate?(:month)).to be true
|
210
|
+
expect(d.approximate?(:day)).to be false
|
211
211
|
end
|
212
212
|
|
213
213
|
it 'parses "2004-(06)?-11": uncertain month, year and day known' do
|
214
214
|
d = Parser.new.parse!('2004-(06)?-11')
|
215
215
|
|
216
|
-
d.uncertain?(:year).
|
217
|
-
d.approximate?(:year).
|
216
|
+
expect(d.uncertain?(:year)).to be false
|
217
|
+
expect(d.approximate?(:year)).to be false
|
218
218
|
|
219
|
-
d.uncertain?(:month).
|
220
|
-
d.approximate?(:month).
|
219
|
+
expect(d.uncertain?(:month)).to be true
|
220
|
+
expect(d.approximate?(:month)).to be false
|
221
221
|
|
222
|
-
d.uncertain?(:day).
|
223
|
-
d.approximate?(:day).
|
222
|
+
expect(d.uncertain?(:day)).to be false
|
223
|
+
expect(d.approximate?(:day)).to be false
|
224
224
|
end
|
225
225
|
|
226
226
|
it 'parses "2004-06-(11)~": day is approximate; year, month known' do
|
227
227
|
d = Parser.new.parse!('2004-06-(11)~')
|
228
|
-
d.approximate?(:year).
|
229
|
-
d.approximate?(:month).
|
230
|
-
d.approximate?(:day).
|
228
|
+
expect(d.approximate?(:year)).to be false
|
229
|
+
expect(d.approximate?(:month)).to be false
|
230
|
+
expect(d.approximate?(:day)).to be true
|
231
231
|
end
|
232
232
|
|
233
233
|
it 'parses "2004-(06)?~": year known, month within year is approximate and uncertain' do
|
234
234
|
d = Parser.new.parse!('2004-(06)?~')
|
235
235
|
|
236
|
-
d.approximate?(:year).
|
237
|
-
d.uncertain?(:year).
|
236
|
+
expect(d.approximate?(:year)).to be false
|
237
|
+
expect(d.uncertain?(:year)).to be false
|
238
238
|
|
239
|
-
d.approximate?(:month).
|
240
|
-
d.uncertain?(:month).
|
239
|
+
expect(d.approximate?(:month)).to be true
|
240
|
+
expect(d.uncertain?(:month)).to be true
|
241
241
|
|
242
|
-
d.approximate?(:day).
|
243
|
-
d.uncertain?(:day).
|
242
|
+
expect(d.approximate?(:day)).to be false
|
243
|
+
expect(d.uncertain?(:day)).to be false
|
244
244
|
end
|
245
245
|
|
246
246
|
it 'parses "2004-(06-11)?": year known, month and day uncertain' do
|
247
247
|
d = Parser.new.parse!('2004-(06-11)?')
|
248
248
|
|
249
|
-
d.approximate?(:year).
|
250
|
-
d.uncertain?(:year).
|
249
|
+
expect(d.approximate?(:year)).to be false
|
250
|
+
expect(d.uncertain?(:year)).to be false
|
251
251
|
|
252
|
-
d.approximate?(:month).
|
253
|
-
d.uncertain?(:month).
|
252
|
+
expect(d.approximate?(:month)).to be false
|
253
|
+
expect(d.uncertain?(:month)).to be true
|
254
254
|
|
255
|
-
d.approximate?(:day).
|
256
|
-
d.uncertain?(:day).
|
255
|
+
expect(d.approximate?(:day)).to be false
|
256
|
+
expect(d.uncertain?(:day)).to be true
|
257
257
|
end
|
258
258
|
|
259
259
|
it 'parses "2004?-06-(11)~": year uncertain, month known, day approximate' do
|
260
260
|
d = Parser.new.parse('2004?-06-(11)~')
|
261
261
|
|
262
|
-
d.approximate?(:year).
|
263
|
-
d.uncertain?(:year).
|
262
|
+
expect(d.approximate?(:year)).to be false
|
263
|
+
expect(d.uncertain?(:year)).to be true
|
264
264
|
|
265
|
-
d.approximate?(:month).
|
266
|
-
d.uncertain?(:month).
|
265
|
+
expect(d.approximate?(:month)).to be false
|
266
|
+
expect(d.uncertain?(:month)).to be false
|
267
267
|
|
268
|
-
d.approximate?(:day).
|
269
|
-
d.uncertain?(:day).
|
268
|
+
expect(d.approximate?(:day)).to be true
|
269
|
+
expect(d.uncertain?(:day)).to be false
|
270
270
|
end
|
271
271
|
|
272
272
|
it 'parses "(2004-(06)~)?": year uncertain and month is both uncertain and approximate' do
|
273
273
|
d = Parser.new.parse!('(2004-(06)~)?')
|
274
274
|
|
275
|
-
d.approximate?(:year).
|
276
|
-
d.uncertain?(:year).
|
275
|
+
expect(d.approximate?(:year)).to be false
|
276
|
+
expect(d.uncertain?(:year)).to be true
|
277
277
|
|
278
|
-
d.approximate?(:month).
|
279
|
-
d.uncertain?(:month).
|
278
|
+
expect(d.approximate?(:month)).to be true
|
279
|
+
expect(d.uncertain?(:month)).to be true
|
280
280
|
|
281
|
-
d.approximate?(:day).
|
282
|
-
d.uncertain?(:day).
|
281
|
+
expect(d.approximate?(:day)).to be false
|
282
|
+
expect(d.uncertain?(:day)).to be false
|
283
283
|
end
|
284
284
|
|
285
285
|
it 'parses "2004~-(06)?-01~": year and day approximate, month uncertain' do
|
286
286
|
d = Parser.new.parse!("2004~-(06)?-01~")
|
287
287
|
|
288
|
-
d.approximate?(:year).
|
289
|
-
d.uncertain?(:year).
|
288
|
+
expect(d.approximate?(:year)).to be true
|
289
|
+
expect(d.uncertain?(:year)).to be false
|
290
290
|
|
291
|
-
d.approximate?(:month).
|
292
|
-
d.uncertain?(:month).
|
291
|
+
expect(d.approximate?(:month)).to be false
|
292
|
+
expect(d.uncertain?(:month)).to be true
|
293
293
|
|
294
|
-
d.approximate?(:day).
|
295
|
-
d.uncertain?(:day).
|
294
|
+
expect(d.approximate?(:day)).to be true
|
295
|
+
expect(d.uncertain?(:day)).to be false
|
296
296
|
end
|
297
297
|
|
298
298
|
it 'parses "2004~-(06-(01)~)?": year and day approximate, month and day uncertain' do
|
299
299
|
d = Parser.new.parse!("2004~-(06-(01)~)?")
|
300
300
|
|
301
|
-
d.approximate?(:year).
|
302
|
-
d.uncertain?(:year).
|
301
|
+
expect(d.approximate?(:year)).to be true
|
302
|
+
expect(d.uncertain?(:year)).to be false
|
303
303
|
|
304
|
-
d.approximate?(:month).
|
305
|
-
d.uncertain?(:month).
|
304
|
+
expect(d.approximate?(:month)).to be false
|
305
|
+
expect(d.uncertain?(:month)).to be true
|
306
306
|
|
307
|
-
d.approximate?(:day).
|
308
|
-
d.uncertain?(:day).
|
307
|
+
expect(d.approximate?(:day)).to be true
|
308
|
+
expect(d.uncertain?(:day)).to be true
|
309
309
|
end
|
310
310
|
|
311
311
|
it 'parses "2004~-(06)?-01?~": year and day approximate, month and day uncertain' do
|
312
312
|
d = Parser.new.parse!("2004~-(06)?-01?~")
|
313
313
|
|
314
|
-
d.approximate?(:year).
|
315
|
-
d.uncertain?(:year).
|
314
|
+
expect(d.approximate?(:year)).to be true
|
315
|
+
expect(d.uncertain?(:year)).to be false
|
316
316
|
|
317
|
-
d.approximate?(:month).
|
318
|
-
d.uncertain?(:month).
|
317
|
+
expect(d.approximate?(:month)).to be false
|
318
|
+
expect(d.uncertain?(:month)).to be true
|
319
319
|
|
320
|
-
d.approximate?(:day).
|
321
|
-
d.uncertain?(:day).
|
320
|
+
expect(d.approximate?(:day)).to be true
|
321
|
+
expect(d.uncertain?(:day)).to be true
|
322
322
|
end
|
323
323
|
|
324
324
|
it 'parses "2004~-(06)?": year approximate, month uncertain' do
|
325
325
|
d = Parser.new.parse!("2004~-(06)?")
|
326
326
|
|
327
|
-
d.approximate?(:year).
|
328
|
-
d.uncertain?(:year).
|
327
|
+
expect(d.approximate?(:year)).to be true
|
328
|
+
expect(d.uncertain?(:year)).to be false
|
329
329
|
|
330
|
-
d.approximate?(:month).
|
331
|
-
d.uncertain?(:month).
|
330
|
+
expect(d.approximate?(:month)).to be false
|
331
|
+
expect(d.uncertain?(:month)).to be true
|
332
332
|
|
333
|
-
d.approximate?(:day).
|
334
|
-
d.uncertain?(:day).
|
333
|
+
expect(d.approximate?(:day)).to be false
|
334
|
+
expect(d.uncertain?(:day)).to be false
|
335
335
|
end
|
336
336
|
|
337
337
|
|
338
338
|
it 'parses "2004~-06?": year approximate, year and month uncertain' do
|
339
339
|
d = Parser.new.parse!("2004~-06?")
|
340
340
|
|
341
|
-
d.approximate?(:year).
|
342
|
-
d.uncertain?(:year).
|
341
|
+
expect(d.approximate?(:year)).to be true
|
342
|
+
expect(d.uncertain?(:year)).to be true
|
343
343
|
|
344
|
-
d.approximate?(:month).
|
345
|
-
d.uncertain?(:month).
|
344
|
+
expect(d.approximate?(:month)).to be false
|
345
|
+
expect(d.uncertain?(:month)).to be true
|
346
346
|
|
347
|
-
d.approximate?(:day).
|
348
|
-
d.uncertain?(:day).
|
347
|
+
expect(d.approximate?(:day)).to be false
|
348
|
+
expect(d.uncertain?(:day)).to be false
|
349
349
|
|
350
350
|
end
|
351
351
|
|