ice_cube 0.16.3 → 0.17.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/config/locales/de.yml +1 -1
- data/config/locales/fr.yml +2 -2
- data/config/locales/id.yml +134 -0
- data/config/locales/it.yml +179 -0
- data/config/locales/nl.yml +133 -0
- data/config/locales/sv.yml +1 -1
- data/lib/ice_cube/builders/hash_builder.rb +1 -5
- data/lib/ice_cube/builders/ical_builder.rb +13 -15
- data/lib/ice_cube/builders/string_builder.rb +10 -16
- data/lib/ice_cube/deprecated.rb +3 -4
- data/lib/ice_cube/errors/count_exceeded.rb +0 -2
- data/lib/ice_cube/errors/until_exceeded.rb +0 -2
- data/lib/ice_cube/flexible_hash.rb +3 -7
- data/lib/ice_cube/i18n.rb +11 -23
- data/lib/ice_cube/input_alignment.rb +9 -11
- data/lib/ice_cube/null_i18n.rb +6 -6
- data/lib/ice_cube/occurrence.rb +10 -11
- data/lib/ice_cube/parsers/hash_parser.rb +3 -6
- data/lib/ice_cube/parsers/ical_parser.rb +39 -38
- data/lib/ice_cube/parsers/yaml_parser.rb +2 -4
- data/lib/ice_cube/rule.rb +7 -18
- data/lib/ice_cube/rules/daily_rule.rb +0 -4
- data/lib/ice_cube/rules/hourly_rule.rb +0 -4
- data/lib/ice_cube/rules/minutely_rule.rb +0 -4
- data/lib/ice_cube/rules/monthly_rule.rb +0 -4
- data/lib/ice_cube/rules/secondly_rule.rb +0 -4
- data/lib/ice_cube/rules/weekly_rule.rb +1 -5
- data/lib/ice_cube/rules/yearly_rule.rb +0 -4
- data/lib/ice_cube/schedule.rb +32 -40
- data/lib/ice_cube/single_occurrence_rule.rb +1 -5
- data/lib/ice_cube/time_util.rb +49 -57
- data/lib/ice_cube/validated_rule.rb +4 -10
- data/lib/ice_cube/validations/count.rb +2 -8
- data/lib/ice_cube/validations/daily_interval.rb +5 -11
- data/lib/ice_cube/validations/day.rb +7 -13
- data/lib/ice_cube/validations/day_of_month.rb +4 -10
- data/lib/ice_cube/validations/day_of_week.rb +10 -13
- data/lib/ice_cube/validations/day_of_year.rb +6 -12
- data/lib/ice_cube/validations/fixed_value.rb +9 -15
- data/lib/ice_cube/validations/hour_of_day.rb +6 -12
- data/lib/ice_cube/validations/hourly_interval.rb +3 -9
- data/lib/ice_cube/validations/lock.rb +8 -14
- data/lib/ice_cube/validations/minute_of_hour.rb +4 -10
- data/lib/ice_cube/validations/minutely_interval.rb +4 -10
- data/lib/ice_cube/validations/month_of_year.rb +2 -8
- data/lib/ice_cube/validations/monthly_interval.rb +4 -10
- data/lib/ice_cube/validations/schedule_lock.rb +0 -6
- data/lib/ice_cube/validations/second_of_minute.rb +4 -10
- data/lib/ice_cube/validations/secondly_interval.rb +2 -8
- data/lib/ice_cube/validations/until.rb +2 -8
- data/lib/ice_cube/validations/weekly_interval.rb +5 -11
- data/lib/ice_cube/validations/yearly_interval.rb +3 -9
- data/lib/ice_cube/version.rb +1 -3
- data/lib/ice_cube.rb +51 -51
- metadata +28 -12
- data/spec/spec_helper.rb +0 -79
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 114901036ec2c7e42928b961eddcf9f958f9a5f7ea4de4aadcf57e2f33220339
|
4
|
+
data.tar.gz: '093d42679272a92e0958662949822cf544f24e8fba39dfaa7c1361fa8da1e738'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8cb959423e6a8d7ae6959b7f2a3fcc38c36e24aed7087037ece993a49fd215d90836c6d3f4ea683b42dc05094e79a5b66632dc8c4bc955a922bb8063dca1616e
|
7
|
+
data.tar.gz: '0238da4a9c76cfbe63be01a61fbac7515bfd0a9bed34ff7fc3932fca0ad3b5a34222c38735baf343712abbc324542a64f7dbebaf76460e82faa970bb92713c15'
|
data/config/locales/de.yml
CHANGED
data/config/locales/fr.yml
CHANGED
@@ -137,7 +137,7 @@ fr:
|
|
137
137
|
- dimanche
|
138
138
|
- lundi
|
139
139
|
- mardi
|
140
|
-
-
|
140
|
+
- mercredi
|
141
141
|
- jeudi
|
142
142
|
- vendredi
|
143
143
|
- samedi
|
@@ -170,4 +170,4 @@ fr:
|
|
170
170
|
default: "%a, %d %b %Y %H:%M:%S %z"
|
171
171
|
long: "%d %B %Y %H:%M"
|
172
172
|
short: "%d %b %H:%M"
|
173
|
-
pm: pm
|
173
|
+
pm: pm
|
@@ -0,0 +1,134 @@
|
|
1
|
+
id:
|
2
|
+
ice_cube:
|
3
|
+
pieces_connector: ' / '
|
4
|
+
not: 'kecuali %{target}'
|
5
|
+
not_on: 'kecuali %{target}'
|
6
|
+
date:
|
7
|
+
formats:
|
8
|
+
default: '%e %B %Y'
|
9
|
+
times:
|
10
|
+
other: '%{count} kali'
|
11
|
+
one: '%{count} kali'
|
12
|
+
until: 'sampai %{date}'
|
13
|
+
days_of_week: '%{segments} %{day}'
|
14
|
+
days_of_month:
|
15
|
+
other: 'hari ke %{segments} dalam satu bulan'
|
16
|
+
one: 'hari ke %{segments} dalam satu bulan'
|
17
|
+
days_of_year:
|
18
|
+
other: 'hari ke %{segments} dalam satu tahun'
|
19
|
+
one: 'hari ke %{segments} dalam satu tahun'
|
20
|
+
at_hours_of_the_day:
|
21
|
+
other: pada jam %{segments} dalam satu hari
|
22
|
+
one: pada jam %{segments} dalam satu hari
|
23
|
+
on_minutes_of_hour:
|
24
|
+
other: pada menit ke %{segments} dalam satu jam
|
25
|
+
one: pada menit ke %{segments} dalam satu jam
|
26
|
+
at_seconds_of_minute:
|
27
|
+
other: pada %{segments} detik
|
28
|
+
one: pada %{segments} detik
|
29
|
+
on_seconds_of_minute:
|
30
|
+
other: pada detik ke %{segments} dalam satu menit
|
31
|
+
one: pada detik ke %{segments} dalam satu menit
|
32
|
+
each_second:
|
33
|
+
one: Setiap detik
|
34
|
+
other: Setiap %{count} detik
|
35
|
+
each_minute:
|
36
|
+
one: Setiap menit
|
37
|
+
other: Setiap %{count} menit
|
38
|
+
each_hour:
|
39
|
+
one: Setiap jam
|
40
|
+
other: Setiap %{count} jam
|
41
|
+
each_day:
|
42
|
+
one: Setiap hari
|
43
|
+
other: Setiap %{count} hari
|
44
|
+
each_week:
|
45
|
+
one: Setiap minggu
|
46
|
+
other: Setiap %{count} minggu
|
47
|
+
each_month:
|
48
|
+
one: Setiap bulan
|
49
|
+
other: Setiap %{count} bulan
|
50
|
+
each_year:
|
51
|
+
one: Setiap tahun
|
52
|
+
other: Setiap %{count} tahun
|
53
|
+
'on': pada %{sentence}
|
54
|
+
in: 'pada %{target}'
|
55
|
+
integer:
|
56
|
+
negative: '%{ordinal} sampai akhir'
|
57
|
+
literal_ordinals:
|
58
|
+
1: pertama
|
59
|
+
-1: terakhir
|
60
|
+
-2: kedua sampai terakhir
|
61
|
+
ordinal: '%{number}%{ordinal}'
|
62
|
+
ordinals:
|
63
|
+
default:
|
64
|
+
on_weekends: pada akhir pekan
|
65
|
+
on_weekdays: pada hari kerja
|
66
|
+
days_on:
|
67
|
+
- Hari minggu
|
68
|
+
- Hari senin
|
69
|
+
- Hari selasa
|
70
|
+
- Hari rabu
|
71
|
+
- Hari kamis
|
72
|
+
- Hari jumat
|
73
|
+
- Hari sabtu
|
74
|
+
on_days: pada %{days}
|
75
|
+
array:
|
76
|
+
last_word_connector: ' dan '
|
77
|
+
two_words_connector: ' dan '
|
78
|
+
words_connector: ', '
|
79
|
+
string:
|
80
|
+
format:
|
81
|
+
day: '%{rest} %{current}'
|
82
|
+
day_of_week: '%{rest} %{current}'
|
83
|
+
day_of_month: '%{rest} %{current}'
|
84
|
+
day_of_year: '%{rest} %{current}'
|
85
|
+
hour_of_day: '%{rest} %{current}'
|
86
|
+
minute_of_hour: '%{rest} %{current}'
|
87
|
+
until: '%{rest} %{current}'
|
88
|
+
count: '%{rest} %{current}'
|
89
|
+
default: '%{rest} %{current}'
|
90
|
+
date:
|
91
|
+
abbr_day_names:
|
92
|
+
- Min
|
93
|
+
- Sen
|
94
|
+
- Sel
|
95
|
+
- Rab
|
96
|
+
- Kam
|
97
|
+
- Jum
|
98
|
+
- Sab
|
99
|
+
abbr_month_names:
|
100
|
+
-
|
101
|
+
- Jan
|
102
|
+
- Feb
|
103
|
+
- Mar
|
104
|
+
- Apr
|
105
|
+
- Mei
|
106
|
+
- Jun
|
107
|
+
- Jul
|
108
|
+
- Agu
|
109
|
+
- Sep
|
110
|
+
- Okt
|
111
|
+
- Nov
|
112
|
+
- Des
|
113
|
+
day_names:
|
114
|
+
- Minggu
|
115
|
+
- Senin
|
116
|
+
- Selasa
|
117
|
+
- Rabu
|
118
|
+
- Kamis
|
119
|
+
- Jumat
|
120
|
+
- Sabtu
|
121
|
+
month_names:
|
122
|
+
-
|
123
|
+
- Januari
|
124
|
+
- Februari
|
125
|
+
- Maret
|
126
|
+
- April
|
127
|
+
- Mei
|
128
|
+
- Juni
|
129
|
+
- Juli
|
130
|
+
- Agustus
|
131
|
+
- September
|
132
|
+
- Oktober
|
133
|
+
- November
|
134
|
+
- Desember
|
@@ -0,0 +1,179 @@
|
|
1
|
+
it:
|
2
|
+
ice_cube:
|
3
|
+
pieces_connector: ' / '
|
4
|
+
not: 'tranne %{target}'
|
5
|
+
not_on: 'tranne %{target}'
|
6
|
+
date:
|
7
|
+
formats:
|
8
|
+
default: '%-d. %B %Y'
|
9
|
+
month_names:
|
10
|
+
-
|
11
|
+
- gennaio
|
12
|
+
- febbraio
|
13
|
+
- marzo
|
14
|
+
- aprile
|
15
|
+
- maggio
|
16
|
+
- giugno
|
17
|
+
- luglio
|
18
|
+
- agosto
|
19
|
+
- settembre
|
20
|
+
- ottobre
|
21
|
+
- novembre
|
22
|
+
- dicembre
|
23
|
+
day_names:
|
24
|
+
- domenica
|
25
|
+
- lunedì
|
26
|
+
- martedì
|
27
|
+
- mercoledì
|
28
|
+
- giovedì
|
29
|
+
- venerdì
|
30
|
+
- sabato
|
31
|
+
times:
|
32
|
+
other: '%{count} volte'
|
33
|
+
one: '%{count} volta'
|
34
|
+
until: 'fino al %{date}'
|
35
|
+
days_of_week: '%{segments} %{day}'
|
36
|
+
days_of_month:
|
37
|
+
one: '%{segments} giorno del mese'
|
38
|
+
other: '%{segments} giorni del mese'
|
39
|
+
days_of_year:
|
40
|
+
one: "%{segments} giorno dell'anno"
|
41
|
+
other: "%{segments} giorni dell'anno"
|
42
|
+
at_hours_of_the_day:
|
43
|
+
one: alla %{segments} ora del giorno
|
44
|
+
other: alla %{segments} ora del giorno
|
45
|
+
on_minutes_of_hour:
|
46
|
+
one: al %{segments} minuto dell'ora
|
47
|
+
other: al %{segments} minuto dell'ora
|
48
|
+
at_seconds_of_minute:
|
49
|
+
one: al %{segments} secondo
|
50
|
+
other: al %{segments} secondo
|
51
|
+
on_seconds_of_minute:
|
52
|
+
one: al %{segments} secondo del minuto
|
53
|
+
other: al %{segments} secondo del minuto
|
54
|
+
each_second:
|
55
|
+
one: ogni secondo
|
56
|
+
other: Ogni %{count} secondi
|
57
|
+
each_minute:
|
58
|
+
one: Ogni minuto
|
59
|
+
other: Ogni %{count} minuti
|
60
|
+
each_hour:
|
61
|
+
one: Ogni ora
|
62
|
+
other: Ogni %{count} ore
|
63
|
+
each_day:
|
64
|
+
one: Ogni giorno
|
65
|
+
other: Ogni %{count} giorni
|
66
|
+
each_week:
|
67
|
+
one: Ogni settimana
|
68
|
+
other: Ogni %{count} settimane
|
69
|
+
each_month:
|
70
|
+
one: Ogni mese
|
71
|
+
other: Ogni %{count} mesi
|
72
|
+
each_year:
|
73
|
+
one: Ogni anno
|
74
|
+
other: Ogni %{count} anni
|
75
|
+
'on': il %{sentence}
|
76
|
+
in: 'a %{target}'
|
77
|
+
integer:
|
78
|
+
negative: '%{ordinal}. e ultimo'
|
79
|
+
literal_ordinals:
|
80
|
+
-1: ultimo
|
81
|
+
-2: penultimo
|
82
|
+
ordinal: '%{number}%{ordinal}'
|
83
|
+
ordinals:
|
84
|
+
default: '.'
|
85
|
+
# 1: st
|
86
|
+
# 2: nd
|
87
|
+
# 3: rd
|
88
|
+
# 11: th
|
89
|
+
# 12: th
|
90
|
+
# 13: th
|
91
|
+
on_weekends: nel fine settimana
|
92
|
+
on_weekdays: nei giorni feriali
|
93
|
+
days_on:
|
94
|
+
- di domenica
|
95
|
+
- di lunedì
|
96
|
+
- di martedì
|
97
|
+
- di mercoledì
|
98
|
+
- di giovedì
|
99
|
+
- di venerdì
|
100
|
+
- di sabato
|
101
|
+
on_days: '%{days}'
|
102
|
+
array:
|
103
|
+
last_word_connector: ' e '
|
104
|
+
two_words_connector: ' e '
|
105
|
+
words_connector: ', '
|
106
|
+
string:
|
107
|
+
format:
|
108
|
+
day: '%{rest} %{current}'
|
109
|
+
day_of_week: '%{rest} %{current}'
|
110
|
+
day_of_month: '%{rest} %{current}'
|
111
|
+
day_of_year: '%{rest} %{current}'
|
112
|
+
hour_of_day: '%{rest} %{current}'
|
113
|
+
minute_of_hour: '%{rest} %{current}'
|
114
|
+
until: '%{rest} %{current}'
|
115
|
+
count: '%{rest} %{current}'
|
116
|
+
default: '%{rest} %{current}'
|
117
|
+
|
118
|
+
date:
|
119
|
+
abbr_day_names:
|
120
|
+
- dom
|
121
|
+
- lun
|
122
|
+
- mar
|
123
|
+
- mer
|
124
|
+
- gio
|
125
|
+
- ven
|
126
|
+
- sab
|
127
|
+
abbr_month_names:
|
128
|
+
-
|
129
|
+
- gen
|
130
|
+
- feb
|
131
|
+
- mar
|
132
|
+
- apr
|
133
|
+
- mag
|
134
|
+
- giu
|
135
|
+
- lug
|
136
|
+
- ago
|
137
|
+
- set
|
138
|
+
- ott
|
139
|
+
- nov
|
140
|
+
- dic
|
141
|
+
day_names:
|
142
|
+
- domenica
|
143
|
+
- lunedì
|
144
|
+
- martedì
|
145
|
+
- mercoledì
|
146
|
+
- giovedì
|
147
|
+
- venerdì
|
148
|
+
- sabato
|
149
|
+
formats:
|
150
|
+
default: "%d/%m/%Y"
|
151
|
+
long: "%d %B %Y"
|
152
|
+
short: "%d %b"
|
153
|
+
month_names:
|
154
|
+
-
|
155
|
+
- gennaio
|
156
|
+
- febbraio
|
157
|
+
- marzo
|
158
|
+
- aprile
|
159
|
+
- maggio
|
160
|
+
- giugno
|
161
|
+
- luglio
|
162
|
+
- agosto
|
163
|
+
- settembre
|
164
|
+
- ottobre
|
165
|
+
- novembre
|
166
|
+
- dicembre
|
167
|
+
order:
|
168
|
+
- :day
|
169
|
+
- :month
|
170
|
+
- :year
|
171
|
+
|
172
|
+
time:
|
173
|
+
am: alle
|
174
|
+
formats:
|
175
|
+
default: "%a, %d %b %Y %H:%M:%S %z"
|
176
|
+
long: "%B %d, %Y %H:%M"
|
177
|
+
short: "%d %b %H:%M"
|
178
|
+
pm: pm
|
179
|
+
|
@@ -0,0 +1,133 @@
|
|
1
|
+
nl:
|
2
|
+
ice_cube:
|
3
|
+
pieces_connector: ' / '
|
4
|
+
not: 'niet %{target}'
|
5
|
+
not_on: 'niet op %{target}'
|
6
|
+
date:
|
7
|
+
formats:
|
8
|
+
default: '%-d %B %Y'
|
9
|
+
times:
|
10
|
+
other: '%{count} keer'
|
11
|
+
one: '%{count} keer'
|
12
|
+
until: 'tot %{date}'
|
13
|
+
days_of_week: '%{segments} %{day}'
|
14
|
+
days_of_month:
|
15
|
+
other: '%{segments} dagen van de maand'
|
16
|
+
one: '%{segments} dag van de maand'
|
17
|
+
days_of_year:
|
18
|
+
other: '%{segments} dagen van het jaar'
|
19
|
+
one: '%{segments} dag van het jaar'
|
20
|
+
at_hours_of_the_day:
|
21
|
+
other: op de %{segments} uren van de dag
|
22
|
+
one: op het %{segments} uur
|
23
|
+
on_minutes_of_hour:
|
24
|
+
other: op de %{segments} minuten van het uur
|
25
|
+
one: om de %{segments} minuut van het uur
|
26
|
+
at_seconds_of_minute:
|
27
|
+
other: op de %{segments} seconden
|
28
|
+
one: op de %{segments} seconde
|
29
|
+
on_seconds_of_minute:
|
30
|
+
other: op de %{segments} seconden van de minuut
|
31
|
+
one: op de %{segments} seconde van de minuut
|
32
|
+
each_second:
|
33
|
+
one: Elke seconde
|
34
|
+
other: Elke %{count} seconden
|
35
|
+
each_minute:
|
36
|
+
one: Elke minuut
|
37
|
+
other: Elke %{count} minuten
|
38
|
+
each_hour:
|
39
|
+
one: Elk uur
|
40
|
+
other: Elke %{count} uren
|
41
|
+
each_day:
|
42
|
+
one: Dagelijks
|
43
|
+
other: Elke %{count} dagen
|
44
|
+
each_week:
|
45
|
+
one: Wekelijks
|
46
|
+
other: Elke %{count} weken
|
47
|
+
each_month:
|
48
|
+
one: Maandelijks
|
49
|
+
other: Elke %{count} maanden
|
50
|
+
each_year:
|
51
|
+
one: Jaarlijks
|
52
|
+
other: Elke %{count} jaren
|
53
|
+
'on': op de %{sentence}
|
54
|
+
in: 'in %{target}'
|
55
|
+
integer:
|
56
|
+
negative: '%{ordinal} laatste'
|
57
|
+
literal_ordinals:
|
58
|
+
-1: laatste
|
59
|
+
-2: voorlaatste
|
60
|
+
ordinal: '%{number}%{ordinal}'
|
61
|
+
ordinals:
|
62
|
+
default: e
|
63
|
+
on_weekends: in het weekend
|
64
|
+
on_weekdays: op weekdagen
|
65
|
+
days_on:
|
66
|
+
- zondagen
|
67
|
+
- maandagen
|
68
|
+
- dinsdagen
|
69
|
+
- woensdagen
|
70
|
+
- donderdagen
|
71
|
+
- vrijdagen
|
72
|
+
- zaterdagen
|
73
|
+
on_days: op %{days}
|
74
|
+
array:
|
75
|
+
last_word_connector: ' en '
|
76
|
+
two_words_connector: ' en '
|
77
|
+
words_connector: ', '
|
78
|
+
string:
|
79
|
+
format:
|
80
|
+
day: '%{rest} %{current}'
|
81
|
+
day_of_week: '%{rest} %{current}'
|
82
|
+
day_of_month: '%{rest} %{current}'
|
83
|
+
day_of_year: '%{rest} %{current}'
|
84
|
+
hour_of_day: '%{rest} %{current}'
|
85
|
+
minute_of_hour: '%{rest} %{current}'
|
86
|
+
until: '%{rest} %{current}'
|
87
|
+
count: '%{rest} %{current}'
|
88
|
+
default: '%{rest} %{current}'
|
89
|
+
date:
|
90
|
+
abbr_day_names:
|
91
|
+
- zo
|
92
|
+
- ma
|
93
|
+
- di
|
94
|
+
- wo
|
95
|
+
- do
|
96
|
+
- vr
|
97
|
+
- za
|
98
|
+
abbr_month_names:
|
99
|
+
-
|
100
|
+
- jan
|
101
|
+
- feb
|
102
|
+
- mrt
|
103
|
+
- apr
|
104
|
+
- mei
|
105
|
+
- jun
|
106
|
+
- jul
|
107
|
+
- aug
|
108
|
+
- sep
|
109
|
+
- okt
|
110
|
+
- nov
|
111
|
+
- dec
|
112
|
+
day_names:
|
113
|
+
- zondag
|
114
|
+
- maandag
|
115
|
+
- dinsdag
|
116
|
+
- woensdag
|
117
|
+
- donderdag
|
118
|
+
- vrijdag
|
119
|
+
- zaterdag
|
120
|
+
month_names:
|
121
|
+
-
|
122
|
+
- januari
|
123
|
+
- februari
|
124
|
+
- maart
|
125
|
+
- april
|
126
|
+
- mei
|
127
|
+
- juni
|
128
|
+
- juli
|
129
|
+
- augustus
|
130
|
+
- september
|
131
|
+
- oktober
|
132
|
+
- november
|
133
|
+
- december
|
data/config/locales/sv.yml
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
module IceCube
|
2
|
-
|
3
2
|
class HashBuilder
|
4
|
-
|
5
3
|
def initialize(rule = nil)
|
6
|
-
@hash = {
|
4
|
+
@hash = {validations: {}, rule_type: rule.class.name}
|
7
5
|
end
|
8
6
|
|
9
7
|
def validations
|
@@ -21,7 +19,5 @@ module IceCube
|
|
21
19
|
def to_hash
|
22
20
|
@hash
|
23
21
|
end
|
24
|
-
|
25
22
|
end
|
26
|
-
|
27
23
|
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
module IceCube
|
2
|
-
|
3
2
|
class IcalBuilder
|
4
|
-
|
5
|
-
ICAL_DAYS = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA']
|
3
|
+
ICAL_DAYS = ["SU", "MO", "TU", "WE", "TH", "FR", "SA"]
|
6
4
|
|
7
5
|
def initialize
|
8
6
|
@hash = {}
|
@@ -19,41 +17,41 @@ module IceCube
|
|
19
17
|
# Build for a single rule entry
|
20
18
|
def to_s
|
21
19
|
arr = []
|
22
|
-
if freq = @hash.delete(
|
23
|
-
arr << "FREQ=#{freq.join(
|
20
|
+
if (freq = @hash.delete("FREQ"))
|
21
|
+
arr << "FREQ=#{freq.join(",")}"
|
24
22
|
end
|
25
23
|
arr.concat(@hash.map do |key, value|
|
26
24
|
if value.is_a?(Array)
|
27
|
-
"#{key}=#{value.join(
|
25
|
+
"#{key}=#{value.join(",")}"
|
28
26
|
end
|
29
27
|
end.compact)
|
30
|
-
arr.join(
|
28
|
+
arr.join(";")
|
31
29
|
end
|
32
30
|
|
33
31
|
def self.ical_utc_format(time)
|
34
32
|
time = time.dup.utc
|
35
|
-
IceCube::I18n.l(time, format:
|
33
|
+
IceCube::I18n.l(time, format: "%Y%m%dT%H%M%SZ") # utc time
|
36
34
|
end
|
37
35
|
|
38
36
|
def self.ical_format(time, force_utc)
|
39
37
|
time = time.dup.utc if force_utc
|
40
38
|
if time.utc?
|
41
|
-
":#{IceCube::I18n.l(time, format:
|
39
|
+
":#{IceCube::I18n.l(time, format: "%Y%m%dT%H%M%SZ")}" # utc time
|
42
40
|
else
|
43
|
-
";TZID=#{IceCube::I18n.l(time, format:
|
41
|
+
";TZID=#{IceCube::I18n.l(time, format: "%Z:%Y%m%dT%H%M%S")}" # local time specified
|
44
42
|
end
|
45
43
|
end
|
46
44
|
|
47
45
|
def self.ical_duration(duration)
|
48
|
-
hours = duration / 3600
|
49
|
-
|
50
|
-
|
46
|
+
hours = duration / 3600
|
47
|
+
duration %= 3600
|
48
|
+
minutes = duration / 60
|
49
|
+
duration %= 60
|
50
|
+
repr = ""
|
51
51
|
repr << "#{hours}H" if hours > 0
|
52
52
|
repr << "#{minutes}M" if minutes > 0
|
53
53
|
repr << "#{duration}S" if duration > 0
|
54
54
|
"PT#{repr}"
|
55
55
|
end
|
56
|
-
|
57
56
|
end
|
58
|
-
|
59
57
|
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
module IceCube
|
2
|
-
|
3
2
|
class StringBuilder
|
4
|
-
|
5
3
|
attr_writer :base
|
6
4
|
|
7
5
|
def initialize
|
@@ -13,15 +11,15 @@ module IceCube
|
|
13
11
|
end
|
14
12
|
|
15
13
|
def to_s
|
16
|
-
string = @base ||
|
14
|
+
string = @base || ""
|
17
15
|
@types.each do |type, segments|
|
18
|
-
if f = self.class.formatter(type)
|
16
|
+
if (f = self.class.formatter(type))
|
19
17
|
current = f.call(segments)
|
20
18
|
else
|
21
19
|
next if segments.empty?
|
22
20
|
current = self.class.sentence(segments)
|
23
21
|
end
|
24
|
-
f = IceCube::I18n.t(
|
22
|
+
f = IceCube::I18n.t("ice_cube.string.format")[type] ? type : "default"
|
25
23
|
string = IceCube::I18n.t("ice_cube.string.format.#{f}", rest: string, current: current)
|
26
24
|
end
|
27
25
|
string
|
@@ -37,14 +35,13 @@ module IceCube
|
|
37
35
|
end
|
38
36
|
|
39
37
|
module Helpers
|
40
|
-
|
41
38
|
# influenced by ActiveSupport's to_sentence
|
42
39
|
def sentence(array)
|
43
40
|
case array.length
|
44
|
-
when 0
|
45
|
-
when 1
|
46
|
-
when 2
|
47
|
-
else
|
41
|
+
when 0 then ""
|
42
|
+
when 1 then array[0].to_s
|
43
|
+
when 2 then "#{array[0]}#{IceCube::I18n.t("ice_cube.array.two_words_connector")}#{array[1]}"
|
44
|
+
else; "#{array[0...-1].join(IceCube::I18n.t("ice_cube.array.words_connector"))}#{IceCube::I18n.t("ice_cube.array.last_word_connector")}#{array[-1]}"
|
48
45
|
end
|
49
46
|
end
|
50
47
|
|
@@ -53,7 +50,7 @@ module IceCube
|
|
53
50
|
end
|
54
51
|
|
55
52
|
def ordinalize(number)
|
56
|
-
IceCube::I18n.t(
|
53
|
+
IceCube::I18n.t("ice_cube.integer.ordinal", number: number, ordinal: ordinal(number))
|
57
54
|
end
|
58
55
|
|
59
56
|
def literal_ordinal(number)
|
@@ -63,14 +60,11 @@ module IceCube
|
|
63
60
|
def ordinal(number)
|
64
61
|
ord = IceCube::I18n.t("ice_cube.integer.ordinals")[number] ||
|
65
62
|
IceCube::I18n.t("ice_cube.integer.ordinals")[number % 10] ||
|
66
|
-
IceCube::I18n.t(
|
67
|
-
number >= 0 ? ord : IceCube::I18n.t("ice_cube.integer.negative", ordinal: ord)
|
63
|
+
IceCube::I18n.t("ice_cube.integer.ordinals")[:default]
|
64
|
+
(number >= 0) ? ord : IceCube::I18n.t("ice_cube.integer.negative", ordinal: ord)
|
68
65
|
end
|
69
|
-
|
70
66
|
end
|
71
67
|
|
72
68
|
extend Helpers
|
73
|
-
|
74
69
|
end
|
75
|
-
|
76
70
|
end
|
data/lib/ice_cube/deprecated.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
module IceCube
|
2
2
|
module Deprecated
|
3
|
-
|
4
3
|
# Define a deprecated alias for a method
|
5
4
|
# @param [Symbol] name - name of method to define
|
6
5
|
# @param [Symbol] replacement - name of method to replace (alias)
|
7
6
|
def deprecated_alias(name, replacement)
|
8
7
|
# Create a wrapped version
|
9
8
|
define_method(name) do |*args, &block|
|
10
|
-
warn "IceCube: #{self.class}##{name} is deprecated (use #{replacement})", caller
|
9
|
+
warn "IceCube: #{self.class}##{name} is deprecated (use #{replacement})", caller(1..1).first
|
11
10
|
send replacement, *args, &block
|
12
11
|
end
|
13
12
|
end
|
@@ -21,7 +20,7 @@ module IceCube
|
|
21
20
|
alias_method old_name, name
|
22
21
|
# And replace it with a wrapped version
|
23
22
|
define_method(name) do |*args, &block|
|
24
|
-
warn "IceCube: #{self.class}##{name} is deprecated (use #{replacement})", caller
|
23
|
+
warn "IceCube: #{self.class}##{name} is deprecated (use #{replacement})", caller(1..1).first
|
25
24
|
send old_name, *args, &block
|
26
25
|
end
|
27
26
|
end
|
@@ -29,7 +28,7 @@ module IceCube
|
|
29
28
|
def self.schedule_options(schedule, options)
|
30
29
|
if options[:start_date_override]
|
31
30
|
warn "IceCube: :start_date_override option is deprecated " \
|
32
|
-
"(use a block: `{|s| s.start_time = override }`)", caller
|
31
|
+
"(use a block: `{|s| s.start_time = override }`)", caller(1..1).first
|
33
32
|
schedule.start_time = options[:start_date_override]
|
34
33
|
end
|
35
34
|
end
|