edtf-humanize 1.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/locales/en.edtf.yml +44 -0
- data/config/locales/fr.edtf.yml +55 -0
- data/config/locales/it.edtf.yml +55 -0
- data/lib/edtf/humanize/century.rb +4 -4
- data/lib/edtf/humanize/decade.rb +4 -4
- data/lib/edtf/humanize/interval.rb +4 -21
- data/lib/edtf/humanize/iso_date.rb +4 -4
- data/lib/edtf/humanize/language/default/century.rb +20 -0
- data/lib/edtf/humanize/language/default/decade.rb +21 -0
- data/lib/edtf/humanize/language/default/formats.rb +112 -0
- data/lib/edtf/humanize/language/default/interval.rb +132 -0
- data/lib/edtf/humanize/language/default/iso_date.rb +21 -0
- data/lib/edtf/humanize/language/default/season.rb +30 -0
- data/lib/edtf/humanize/language/default/set.rb +78 -0
- data/lib/edtf/humanize/language/default/unknown.rb +17 -0
- data/lib/edtf/humanize/language/default.rb +17 -0
- data/lib/edtf/humanize/language/english.rb +11 -0
- data/lib/edtf/humanize/language/french.rb +36 -0
- data/lib/edtf/humanize/language/italian.rb +34 -0
- data/lib/edtf/humanize/language.rb +13 -0
- data/lib/edtf/humanize/season.rb +4 -16
- data/lib/edtf/humanize/set.rb +4 -33
- data/lib/edtf/humanize/unknown.rb +5 -3
- data/lib/edtf/humanize/version.rb +3 -1
- data/lib/edtf/humanize.rb +24 -45
- data/lib/edtf-humanize.rb +5 -0
- data/spec/edtf_humanize_en_spec.rb +102 -0
- data/spec/edtf_humanize_fr_spec.rb +110 -0
- data/spec/edtf_humanize_it_spec.rb +110 -0
- data/spec/spec_helper.rb +2 -0
- metadata +70 -20
- data/lib/edtf/humanize/formats.rb +0 -73
- data/spec/edtf_humanize_spec.rb +0 -65
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Edtf
|
4
|
+
module Humanize
|
5
|
+
module Language
|
6
|
+
module Default
|
7
|
+
module Unknown
|
8
|
+
extend self
|
9
|
+
|
10
|
+
def humanizer(_date)
|
11
|
+
I18n.t('edtf.terms.unknown', default: 'unknown')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Edtf
|
4
|
+
module Humanize
|
5
|
+
module Language
|
6
|
+
module Default
|
7
|
+
include Century
|
8
|
+
include Decade
|
9
|
+
include Interval
|
10
|
+
include IsoDate
|
11
|
+
include Season
|
12
|
+
include Set
|
13
|
+
include Unknown
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Edtf
|
4
|
+
module Humanize
|
5
|
+
module Language
|
6
|
+
module French
|
7
|
+
include Default
|
8
|
+
|
9
|
+
module Century
|
10
|
+
extend self
|
11
|
+
|
12
|
+
def humanizer(date)
|
13
|
+
require 'roman'
|
14
|
+
"#{(date.year.abs / 100 + 1).to_roman}" \
|
15
|
+
"#{century_number_suffix(date)}" \
|
16
|
+
"#{century_sign_suffix(date)}"
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def century_number_suffix(date)
|
22
|
+
return 'er siècle' if (date.year.abs / 100).zero?
|
23
|
+
|
24
|
+
'e siècle'
|
25
|
+
end
|
26
|
+
|
27
|
+
def century_sign_suffix(date)
|
28
|
+
return ' avant J.C.' if date.year.negative?
|
29
|
+
|
30
|
+
''
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Edtf
|
4
|
+
module Humanize
|
5
|
+
module Language
|
6
|
+
module Italian
|
7
|
+
include Default
|
8
|
+
|
9
|
+
module Century
|
10
|
+
extend self
|
11
|
+
|
12
|
+
def humanizer(date)
|
13
|
+
require 'roman'
|
14
|
+
"#{(date.year.abs / 100 + 1).to_roman}" \
|
15
|
+
"#{century_number_suffix}" \
|
16
|
+
"#{century_sign_suffix(date)}"
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def century_number_suffix
|
22
|
+
' secolo'
|
23
|
+
end
|
24
|
+
|
25
|
+
def century_sign_suffix(date)
|
26
|
+
return ' a. C.' if date.year.negative?
|
27
|
+
|
28
|
+
''
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/edtf/humanize/season.rb
CHANGED
@@ -1,25 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Edtf
|
2
4
|
module Humanize
|
3
5
|
module Season
|
4
|
-
|
5
|
-
include Edtf::Humanize::Formats
|
6
|
+
include Edtf::Humanize::Language
|
6
7
|
|
7
8
|
def humanize
|
8
|
-
|
9
|
-
"#{translate_season(self.season)} #{self.year}"\
|
10
|
-
"#{apply_if_uncertain(self)}"
|
11
|
-
end
|
12
|
-
|
13
|
-
private
|
14
|
-
|
15
|
-
def translate_season(season)
|
16
|
-
begin
|
17
|
-
I18n.translate!("date.seasons.#{self.season}")
|
18
|
-
rescue I18n::MissingTranslationData
|
19
|
-
self.season
|
20
|
-
end
|
9
|
+
language_strategy::Season.humanizer(self)
|
21
10
|
end
|
22
|
-
|
23
11
|
end
|
24
12
|
end
|
25
13
|
end
|
data/lib/edtf/humanize/set.rb
CHANGED
@@ -1,42 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Edtf
|
2
4
|
module Humanize
|
3
5
|
module Set
|
4
|
-
|
5
|
-
include Edtf::Humanize::Formats
|
6
|
+
include Edtf::Humanize::Language
|
6
7
|
|
7
8
|
def humanize
|
8
|
-
|
9
|
-
words_connector: Edtf::Humanize.configuration.set_dates_connector,
|
10
|
-
last_word_connector: Edtf::Humanize.configuration.set_last_date_connector,
|
11
|
-
two_words_connector: Edtf::Humanize.configuration.set_two_dates_connector
|
12
|
-
)
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def format_set_entries(dates)
|
18
|
-
dates.entries.map.with_index { |date, index|
|
19
|
-
"#{apply_if_earlier(dates, index)}"\
|
20
|
-
"#{apply_if_later(dates, index)}"\
|
21
|
-
"#{apply_if_approximate(date)}"\
|
22
|
-
"#{simple_date_format(date)}"
|
23
|
-
}
|
9
|
+
language_strategy::Set.humanizer(self)
|
24
10
|
end
|
25
|
-
|
26
|
-
# '[..1760-12-03]' => on or before December 3, 1760
|
27
|
-
def apply_if_earlier(dates, index)
|
28
|
-
if dates.earlier? && index == 0
|
29
|
-
Edtf::Humanize.configuration.set_earlier_prefix
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
# '[1760-12..]' => on or after December 1760
|
34
|
-
def apply_if_later(dates, index)
|
35
|
-
if dates.later? && (index + 1) == dates.size
|
36
|
-
Edtf::Humanize.configuration.set_later_prefix
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
11
|
end
|
41
12
|
end
|
42
13
|
end
|
@@ -1,11 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Edtf
|
2
4
|
module Humanize
|
3
5
|
module Unknown
|
6
|
+
include Edtf::Humanize::Language
|
4
7
|
|
5
8
|
def humanize
|
6
|
-
|
9
|
+
language_strategy::Unknown.humanizer(self)
|
7
10
|
end
|
8
|
-
|
9
11
|
end
|
10
12
|
end
|
11
|
-
end
|
13
|
+
end
|
data/lib/edtf/humanize.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Edtf
|
2
4
|
module Humanize
|
3
|
-
|
4
5
|
require 'edtf'
|
5
6
|
|
6
|
-
require 'edtf/humanize/
|
7
|
+
require 'edtf/humanize/language'
|
7
8
|
require 'edtf/humanize/decade'
|
8
9
|
require 'edtf/humanize/century'
|
9
10
|
require 'edtf/humanize/season'
|
@@ -11,6 +12,18 @@ module Edtf
|
|
11
12
|
require 'edtf/humanize/set'
|
12
13
|
require 'edtf/humanize/unknown'
|
13
14
|
require 'edtf/humanize/iso_date'
|
15
|
+
require 'edtf/humanize/language/default/formats'
|
16
|
+
require 'edtf/humanize/language/default/decade'
|
17
|
+
require 'edtf/humanize/language/default/century'
|
18
|
+
require 'edtf/humanize/language/default/season'
|
19
|
+
require 'edtf/humanize/language/default/interval'
|
20
|
+
require 'edtf/humanize/language/default/set'
|
21
|
+
require 'edtf/humanize/language/default/unknown'
|
22
|
+
require 'edtf/humanize/language/default/iso_date'
|
23
|
+
require 'edtf/humanize/language/default'
|
24
|
+
require 'edtf/humanize/language/english'
|
25
|
+
require 'edtf/humanize/language/french'
|
26
|
+
require 'edtf/humanize/language/italian'
|
14
27
|
|
15
28
|
EDTF::Decade.include Edtf::Humanize::Decade
|
16
29
|
EDTF::Century.include Edtf::Humanize::Century
|
@@ -20,7 +33,6 @@ module Edtf
|
|
20
33
|
EDTF::Unknown.include Edtf::Humanize::Unknown
|
21
34
|
Date.include Edtf::Humanize::IsoDate
|
22
35
|
|
23
|
-
|
24
36
|
def self.configuration
|
25
37
|
@configuration ||= Configuration.new
|
26
38
|
end
|
@@ -34,51 +46,18 @@ module Edtf
|
|
34
46
|
end
|
35
47
|
|
36
48
|
class Configuration
|
37
|
-
|
38
|
-
attr_accessor :day_precision_strftime_format,
|
39
|
-
:month_precision_strftime_format,
|
40
|
-
:year_precision_strftime_format,
|
41
|
-
:approximate_date_prefix,
|
42
|
-
:uncertain_date_suffix,
|
43
|
-
:decade_suffix,
|
44
|
-
:century_suffix,
|
45
|
-
:unspecified_digit_substitute,
|
46
|
-
:interval_connector,
|
47
|
-
:interval_unspecified_suffix,
|
48
|
-
:set_dates_connector,
|
49
|
-
:set_last_date_connector,
|
50
|
-
:set_two_dates_connector,
|
51
|
-
:set_earlier_prefix,
|
52
|
-
:set_later_prefix,
|
53
|
-
:unknown
|
54
|
-
|
55
49
|
def initialize
|
56
|
-
@
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
@uncertain_date_suffix = "?"
|
63
|
-
|
64
|
-
@decade_suffix = "s"
|
65
|
-
@century_suffix = "s"
|
66
|
-
|
67
|
-
@unspecified_digit_substitute = "x"
|
68
|
-
|
69
|
-
@interval_connector = " to "
|
70
|
-
@interval_unspecified_suffix = "s"
|
71
|
-
|
72
|
-
@set_dates_connector = ", "
|
73
|
-
@set_last_date_connector = " or "
|
74
|
-
@set_two_dates_connector = " or "
|
75
|
-
@set_earlier_prefix = "on or before "
|
76
|
-
@set_later_prefix = "on or after "
|
77
|
-
|
78
|
-
@unknown = "unknown"
|
50
|
+
@language_strategies = {
|
51
|
+
default: Edtf::Humanize::Language::Default,
|
52
|
+
en: Edtf::Humanize::Language::English,
|
53
|
+
fr: Edtf::Humanize::Language::French,
|
54
|
+
it: Edtf::Humanize::Language::Italian
|
55
|
+
}
|
79
56
|
end
|
80
57
|
|
58
|
+
def language_strategy(language)
|
59
|
+
@language_strategies[language.to_sym] || @language_strategies[:default]
|
60
|
+
end
|
81
61
|
end
|
82
|
-
|
83
62
|
end
|
84
63
|
end
|
data/lib/edtf-humanize.rb
CHANGED
@@ -0,0 +1,102 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'edtf-humanize'
|
4
|
+
|
5
|
+
RSpec.describe Edtf::Humanize do
|
6
|
+
before do
|
7
|
+
I18n.locale = :en
|
8
|
+
end
|
9
|
+
|
10
|
+
it { is_expected.to be_a(Module) }
|
11
|
+
|
12
|
+
context 'with a decade' do
|
13
|
+
it 'returns a humanized decade string' do
|
14
|
+
expect(Date.edtf('199x').humanize).to eq('1990s')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'with a century' do
|
19
|
+
it 'returns a humanized century string' do
|
20
|
+
expect(Date.edtf('19xx').humanize).to eq('1900s')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'with an interval' do
|
25
|
+
it 'returns a humanized interval string' do
|
26
|
+
expect(Date.edtf('1970/1980').humanize).to eq('1970 to 1980')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'with an open interval' do
|
31
|
+
it 'returns a humanized interval string' do
|
32
|
+
expect(Date.edtf('1970/open').humanize).to eq('since 1970')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'with an approximate interval'
|
37
|
+
it 'returns a humanized approximate interval string' do
|
38
|
+
expect(Date.edtf('1970~/1980~').humanize).to(
|
39
|
+
eq('circa 1970 to circa 1980')
|
40
|
+
)
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'with an iso date' do
|
44
|
+
it 'returns a humanized ISO date string' do
|
45
|
+
expect(Date.edtf('1975-07-01').humanize).to eq('July 1, 1975')
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'with an uncertain iso date' do
|
50
|
+
it 'returns a humanized uncertain ISO date string' do
|
51
|
+
expect(Date.edtf('1975?').humanize).to eq('1975?')
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'with an unspecified year iso date' do
|
56
|
+
it 'returns a humanized unspecified year ISO date string' do
|
57
|
+
expect(Date.edtf('197u').humanize).to eq('197X')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'with a season' do
|
62
|
+
it 'returns a humanized season string' do
|
63
|
+
expect(Date.edtf('1975-22').humanize).to eq('summer 1975')
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'with a set' do
|
68
|
+
it 'returns a humanized exclusive set string' do
|
69
|
+
expect(Date.edtf('[1980, 1981, 1983]').humanize).to(
|
70
|
+
eq('1980, 1981 or 1983')
|
71
|
+
)
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'returns a humanized inclusive set string' do
|
75
|
+
expect(Date.edtf('{1980, 1981, 1983}').humanize).to(
|
76
|
+
eq('1980, 1981 and 1983')
|
77
|
+
)
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'returns a humanized open (before) exclusive set string' do
|
81
|
+
expect(Date.edtf('[..1980]').humanize).to eq('on or before 1980')
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'returns a humanized open (after) exclusive set string' do
|
85
|
+
expect(Date.edtf('[1980..]').humanize).to eq('on or after 1980')
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'returns a humanized open (before) inclusive set string' do
|
89
|
+
expect(Date.edtf('{..1980}').humanize).to eq('on and before 1980')
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'returns a humanized open (after) inclusive set string' do
|
93
|
+
expect(Date.edtf('{1980..}').humanize).to eq('on and after 1980')
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
context 'with an unknown value' do
|
98
|
+
it 'returns a humanized unknown string' do
|
99
|
+
expect(Date.edtf('uuuu').humanize).to eq('unknown')
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'edtf-humanize'
|
4
|
+
|
5
|
+
RSpec.describe Edtf::Humanize do
|
6
|
+
before do
|
7
|
+
I18n.locale = :fr
|
8
|
+
end
|
9
|
+
|
10
|
+
it { is_expected.to be_a(Module) }
|
11
|
+
|
12
|
+
context 'with a decade' do
|
13
|
+
it 'returns a humanized decade string' do
|
14
|
+
expect(Date.edtf('199x').humanize).to eq('Les années 1990')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'with a century' do
|
19
|
+
it 'returns a humanized century string' do
|
20
|
+
expect(Date.edtf('19xx').humanize).to eq('XXe siècle')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'with an interval' do
|
25
|
+
it 'returns a humanized interval string' do
|
26
|
+
expect(Date.edtf('1970/1980').humanize).to eq('De 1970 à 1980')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'with an open interval' do
|
31
|
+
it 'returns a humanized interval string' do
|
32
|
+
expect(Date.edtf('1970/open').humanize).to eq('Depuis 1970')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'with an approximate interval'
|
37
|
+
it 'returns a humanized approximate interval string' do
|
38
|
+
expect(Date.edtf('1970~/1980~').humanize).to(
|
39
|
+
eq('De 1970 environ à 1980 environ')
|
40
|
+
)
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'with an iso date' do
|
44
|
+
it 'returns a humanized ISO date string' do
|
45
|
+
expect(Date.edtf('1975-07-01').humanize).to eq('1 Juillet 1975')
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'with an uncertain iso date' do
|
50
|
+
it 'returns a humanized uncertain ISO date string' do
|
51
|
+
expect(Date.edtf('1975?').humanize).to eq('1975?')
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'with an unspecified year iso date' do
|
56
|
+
it 'returns a humanized unspecified year ISO date string' do
|
57
|
+
expect(Date.edtf('197u').humanize).to eq('197X')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'with a season' do
|
62
|
+
it 'returns a humanized season string' do
|
63
|
+
expect(Date.edtf('1975-22').humanize).to eq('été 1975')
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'with a set' do
|
68
|
+
it 'returns a humanized exclusive set string' do
|
69
|
+
expect(Date.edtf('[1980, 1981, 1983]').humanize).to(
|
70
|
+
eq('1980, 1981 ou 1983')
|
71
|
+
)
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'returns a humanized inclusive set string' do
|
75
|
+
expect(Date.edtf('{1980, 1981, 1983}').humanize).to(
|
76
|
+
eq('1980, 1981 et 1983')
|
77
|
+
)
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'returns a humanized open (before) exclusive set string' do
|
81
|
+
expect(Date.edtf('[..1980]').humanize).to(
|
82
|
+
eq('Le ou avant 1980')
|
83
|
+
)
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'returns a humanized open (after) exclusive set string' do
|
87
|
+
expect(Date.edtf('[1980..]').humanize).to(
|
88
|
+
eq('Le ou après 1980')
|
89
|
+
)
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'returns a humanized open (before) inclusive set string' do
|
93
|
+
expect(Date.edtf('{..1980}').humanize).to(
|
94
|
+
eq('Le et avant 1980')
|
95
|
+
)
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'returns a humanized open (after) inclusive set string' do
|
99
|
+
expect(Date.edtf('{1980..}').humanize).to(
|
100
|
+
eq('Le et après 1980')
|
101
|
+
)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context 'with an unknown value' do
|
106
|
+
it 'returns a humanized unknown string' do
|
107
|
+
expect(Date.edtf('uuuu').humanize).to eq('Inconnue')
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'edtf-humanize'
|
4
|
+
|
5
|
+
RSpec.describe Edtf::Humanize do
|
6
|
+
before do
|
7
|
+
I18n.locale = :it
|
8
|
+
end
|
9
|
+
|
10
|
+
it { is_expected.to be_a(Module) }
|
11
|
+
|
12
|
+
context 'with a decade' do
|
13
|
+
it 'returns a humanized decade string' do
|
14
|
+
expect(Date.edtf('199x').humanize).to eq('anni 1990')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'with a century' do
|
19
|
+
it 'returns a humanized century string' do
|
20
|
+
expect(Date.edtf('19xx').humanize).to eq('XX secolo')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'with an interval' do
|
25
|
+
it 'returns a humanized interval string' do
|
26
|
+
expect(Date.edtf('1970/1980').humanize).to eq('1970 - 1980')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'with an open interval' do
|
31
|
+
it 'returns a humanized interval string' do
|
32
|
+
expect(Date.edtf('1970/open').humanize).to eq('1970 - ')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'with an approximate interval'
|
37
|
+
it 'returns a humanized approximate interval string' do
|
38
|
+
expect(Date.edtf('1970~/1980~').humanize).to(
|
39
|
+
eq('circa 1970 - circa 1980')
|
40
|
+
)
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'with an iso date' do
|
44
|
+
it 'returns a humanized ISO date string' do
|
45
|
+
expect(Date.edtf('1975-07-01').humanize).to eq('1 luglio 1975')
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'with an uncertain iso date' do
|
50
|
+
it 'returns a humanized uncertain ISO date string' do
|
51
|
+
expect(Date.edtf('1975?').humanize).to eq('1975 ?')
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'with an unspecified year iso date' do
|
56
|
+
it 'returns a humanized unspecified year ISO date string' do
|
57
|
+
expect(Date.edtf('197u').humanize).to eq('197X')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'with a season' do
|
62
|
+
it 'returns a humanized season string' do
|
63
|
+
expect(Date.edtf('1975-22').humanize).to eq('estate 1975')
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'with a set' do
|
68
|
+
it 'returns a humanized exclusive set string' do
|
69
|
+
expect(Date.edtf('[1980, 1981, 1983]').humanize).to(
|
70
|
+
eq('1980, 1981 o 1983')
|
71
|
+
)
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'returns a humanized inclusive set string' do
|
75
|
+
expect(Date.edtf('{1980, 1981, 1983}').humanize).to(
|
76
|
+
eq('1980, 1981 e 1983')
|
77
|
+
)
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'returns a humanized open (before) exclusive set string' do
|
81
|
+
expect(Date.edtf('[..1980]').humanize).to(
|
82
|
+
eq('prima di 1980')
|
83
|
+
)
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'returns a humanized open (after) exclusive set string' do
|
87
|
+
expect(Date.edtf('[1980..]').humanize).to(
|
88
|
+
eq('dopo 1980')
|
89
|
+
)
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'returns a humanized open (before) inclusive set string' do
|
93
|
+
expect(Date.edtf('{..1980}').humanize).to(
|
94
|
+
eq('prima di 1980')
|
95
|
+
)
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'returns a humanized open (after) inclusive set string' do
|
99
|
+
expect(Date.edtf('{1980..}').humanize).to(
|
100
|
+
eq('dopo 1980')
|
101
|
+
)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context 'with an unknown value' do
|
106
|
+
it 'returns a humanized unknown string' do
|
107
|
+
expect(Date.edtf('uuuu').humanize).to eq('data sconosciuta')
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
data/spec/spec_helper.rb
CHANGED