cronex 0.8.0 → 0.9.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1ab473d3578046b33ddd723eaca36609b34118dd
4
- data.tar.gz: 7246cc710d1ca21a5204bb5011531f56a88b1599
3
+ metadata.gz: f040a0dcd99a71f33ee446cc79a335d3d8fc52b1
4
+ data.tar.gz: 81f0db030c4c4ac38bc3175e6899a0f8499758c7
5
5
  SHA512:
6
- metadata.gz: 6f2f55fec081a1eb1631e597c0156a7f703e56834bf83c1e82b4ada16b2def0b90117f27824066efb4e49e1a98b2a7a423fd3cf9214a47281238df1c2ab0ade8
7
- data.tar.gz: 9c0bcdf5a8814ffc8ad7d81d3cb3e939fe2bb94e63f4f7a0284a08a6ef6791f5378a0a2c8e566cefa9d220505985d1433b16dd4852a07b595c3177664771bb00
6
+ metadata.gz: c21b947a64e2de555953c55c6419ad0b1a10c15c71ac96356ff0aea45f41bcf4ea6c78f6ef46e7b7102cc189b48fc7a1db3db9a6f160da88e6567371de1094aa
7
+ data.tar.gz: 24c933580f5903618810c9940aae4880800e7167dc6191f86e3b2de11937a3ad484f2a7b1702b49f35102aca3b424d156efb4ed172164fa9592cbee7ed7e9787
@@ -1,3 +1,6 @@
1
+ ### [0.9.0] - 2019-04-21
2
+ * Add german locale
3
+
1
4
  ### [0.8.0] - 2019-04-18
2
5
  * Add support for timezones
3
6
 
data/README.md CHANGED
@@ -25,6 +25,7 @@ For a quick intro to cron see Quartz [Cron Tutorial](http://www.quartz-scheduler
25
25
  * English
26
26
  * Brazilian
27
27
  * French
28
+ * German
28
29
  * Romanian
29
30
  * Russian
30
31
 
@@ -1,3 +1,3 @@
1
1
  module Cronex
2
- VERSION = '0.8.0'
2
+ VERSION = '0.9.0'
3
3
  end
@@ -0,0 +1,75 @@
1
+ # resources_de.yml
2
+ ---
3
+ expression_empty_exception: 'Ausdruck darf nicht null oder leer sein'
4
+ interval_description_format: 'jeden %s Tag der Woche'
5
+ between_description_format: '%s bis %s'
6
+ between_weekday_description_format: '%s bis %s'
7
+ on_the_day_of_the_month: 'am {{nth}} %s des Monats'
8
+ on_the_of_the_month: 'am %s des Monats'
9
+ on_the_last_of_the_month: 'am letzten %s des Monats'
10
+ on_the_last_day_of_the_month: 'am letzten Tag des Monats'
11
+ on_the_last_weekday_of_the_month: 'am letzen Werktag des Monats'
12
+ between_days_of_the_month: 'zwischen Tag %s und %s des Monats'
13
+ seconds_through_past_the_minute: 'Sekunden %s bis %s vergangene Minute'
14
+ between_x_and_y: 'zwischen %s und %s'
15
+ past_the_hour: 'vergangene Stunde'
16
+ at_x_seconds_past_the_minute: 'am %s Sekunden nach der vergangenen Minute'
17
+ minutes_through_past_the_hour: 'Minuten %s bis %s nach der vergangenen Stunde'
18
+ on_day_of_the_month: 'am %s Tag des Monats'
19
+ first_weekday: 'Erster Wochentag'
20
+ weekday_nearest_day: 'Wochentag zum nächsten Tag %s'
21
+ starting: 'beginnend'
22
+ only_on: 'nur an %s'
23
+ only_in: 'nur in %s'
24
+ every_x_seconds: 'Alle %s Sekunden'
25
+ every_minute_between: 'Jede Minute zwischen %s und %s'
26
+ every_second: 'Jede Sekunde'
27
+ every_minute: 'Jede Minute'
28
+ every_1_minute: 'Jede 1. Minute'
29
+ every_hour: 'Jede Stunde'
30
+ every_1_hour: 'Jede 1. Stunde'
31
+ every_day: 'Jeden Tag'
32
+ every_1_day: 'Jeden 1. Tag'
33
+ every_year: 'Jedes Jahr'
34
+ every_x: 'Alle %s'
35
+ at_x: 'um %s'
36
+ on_x: 'an %s'
37
+ in_x: 'in %s'
38
+ first: ersten
39
+ second: zweiten
40
+ third: dritten
41
+ fourth: vierten
42
+ fifth: fünften
43
+ time_pm: PM
44
+ time_am: AM
45
+ and: und
46
+ at: Um
47
+ day: Tag
48
+ days: Tagen
49
+ hour: Stunde
50
+ hours: Stunden
51
+ minute: Minute
52
+ minutes: Minuten
53
+ month: Monat
54
+ months: Monaten
55
+ year: Jahr
56
+ years: Jahren
57
+ monday: Montag
58
+ tuesday: Dienstag
59
+ wednesday: Mittwoch
60
+ thursday: Donnerstag
61
+ friday: Freitag
62
+ saturday: Samstag
63
+ sunday: Sonntag
64
+ january: Januar
65
+ february: Februar
66
+ march: März
67
+ april: April
68
+ may: Mai
69
+ june: Juni
70
+ july: Juli
71
+ august: August
72
+ september: September
73
+ october: Oktober
74
+ november: November
75
+ december: Dezember
@@ -0,0 +1,382 @@
1
+ # encoding: utf-8
2
+ require 'cronex'
3
+
4
+ module Cronex
5
+ describe ExpressionDescriptor do
6
+
7
+ def desc(expression, opts = {}, timezone = 'UTC')
8
+ Cronex::ExpressionDescriptor.new(expression, opts, 'de', timezone).description
9
+ end
10
+
11
+ let(:opts) { { zero_based_dow: false } }
12
+
13
+ it 'every second' do
14
+ expect(desc('* * * * * *')).to eq('Jede Sekunde')
15
+ end
16
+
17
+ it 'every 45 seconds' do
18
+ expect(desc('*/45 * * * * *')).to eq('Alle 45 Sekunden')
19
+ end
20
+
21
+ it 'minute span' do
22
+ expect(desc('0-10 11 * * *')).to eq('Jede Minute zwischen 11:00 AM und 11:10 AM')
23
+ end
24
+
25
+ context 'every minute' do
26
+ it 'every minute' do
27
+ expect(desc('* * * * *')).to eq('Jede Minute')
28
+ end
29
+
30
+ it 'every minute */1' do
31
+ expect(desc('*/1 * * * *')).to eq('Jede Minute')
32
+ end
33
+
34
+ it 'every minute 0 0/1' do
35
+ expect(desc('0 0/1 * * * ?')).to eq('Jede Minute')
36
+ end
37
+ end
38
+
39
+ context 'every X minutes:' do
40
+ it 'every 5 minutes' do
41
+ expect(desc('*/5 * * * *')).to eq('Alle 5 Minuten')
42
+ end
43
+
44
+ it 'every 5 minute 0 */5' do
45
+ expect(desc('0 */5 * * * *')).to eq('Alle 5 Minuten')
46
+ end
47
+
48
+ it 'every 10 minutes 0 0/10' do
49
+ expect(desc('0 0/10 * * * ?')).to eq('Alle 10 Minuten')
50
+ end
51
+ end
52
+
53
+ context 'every hour:' do
54
+ it 'every hour 0 0' do
55
+ expect(desc('0 0 * * * ?')).to eq('Jede Stunde')
56
+ end
57
+
58
+ it 'every hour 0 0 0/1' do
59
+ expect(desc('0 0 0/1 * * ?')).to eq('Jede Stunde')
60
+ end
61
+ end
62
+
63
+ context 'daily:' do
64
+ it 'daily at /\d\d/:/\d\d/' do
65
+ expect(desc('30 11 * * *')).to eq('Um 11:30 AM')
66
+ end
67
+
68
+ it 'daily at /\d/:/\d/' do
69
+ expect(desc('9 8 * * *')).to eq('Um 8:09 AM')
70
+ end
71
+
72
+ it 'daily at /0[89]/:/0[89]/' do
73
+ expect(desc('09 08 * * *')).to eq('Um 8:09 AM')
74
+ end
75
+
76
+ it 'daily at /0[1-7]/ /0[1-7/' do
77
+ expect(desc('02 01 * * *')).to eq('Um 1:02 AM')
78
+ end
79
+ end
80
+
81
+ context 'time of day certain days of week:' do
82
+ it 'time of day on MON-FRI' do
83
+ expect(desc('0 23 ? * MON-FRI')).to eq('Um 11:00 PM, Montag bis Freitag')
84
+ end
85
+
86
+ it 'time of day on 1-5' do
87
+ expect(desc('30 11 * * 1-5')).to eq('Um 11:30 AM, Montag bis Freitag')
88
+ end
89
+ end
90
+
91
+ it 'one month only' do
92
+ expect(desc('* * * 3 *')).to eq('Jede Minute, nur in März')
93
+ end
94
+
95
+ it 'two months only' do
96
+ expect(desc('* * * 3,6 *')).to eq('Jede Minute, nur in März und Juni')
97
+ end
98
+
99
+ it 'two times each afternoon' do
100
+ expect(desc('30 14,16 * * *')).to eq('Um 2:30 PM und 4:30 PM')
101
+ end
102
+
103
+ it 'three times daily' do
104
+ expect(desc('30 6,14,16 * * *')).to eq('Um 6:30 AM, 2:30 PM und 4:30 PM')
105
+ end
106
+
107
+ context 'once a week:' do
108
+ it 'once a week 0' do
109
+ expect(desc('46 9 * * 0')).to eq('Um 9:46 AM, nur an Sonntag')
110
+ end
111
+
112
+ it 'once a week SUN' do
113
+ expect(desc('46 9 * * SUN')).to eq('Um 9:46 AM, nur an Sonntag')
114
+ end
115
+
116
+ it 'once a week 7' do
117
+ expect(desc('46 9 * * 7')).to eq('Um 9:46 AM, nur an Sonntag')
118
+ end
119
+
120
+ it 'once a week 1' do
121
+ expect(desc('46 9 * * 1')).to eq('Um 9:46 AM, nur an Montag')
122
+ end
123
+
124
+ it 'once a week 6' do
125
+ expect(desc('46 9 * * 6')).to eq('Um 9:46 AM, nur an Samstag')
126
+ end
127
+ end
128
+
129
+ context 'once a week non zero based:' do
130
+ it 'once a week 1' do
131
+ expect(desc('46 9 * * 1', opts)).to eq('Um 9:46 AM, nur an Sonntag')
132
+ end
133
+
134
+ it 'once a week SUN' do
135
+ expect(desc('46 9 * * SUN', opts)).to eq('Um 9:46 AM, nur an Sonntag')
136
+ end
137
+
138
+ it 'once a week 2' do
139
+ expect(desc('46 9 * * 2', opts)).to eq('Um 9:46 AM, nur an Montag')
140
+ end
141
+
142
+ it 'once a week 7' do
143
+ expect(desc('46 9 * * 7', opts)).to eq('Um 9:46 AM, nur an Samstag')
144
+ end
145
+ end
146
+
147
+ context 'twice a week:' do
148
+ it 'twice a week 1,2' do
149
+ expect(desc('46 9 * * 1,2')).to eq('Um 9:46 AM, nur an Montag und Dienstag')
150
+ end
151
+
152
+ it 'twice a week MON,TUE' do
153
+ expect(desc('46 9 * * MON,TUE')).to eq('Um 9:46 AM, nur an Montag und Dienstag')
154
+ end
155
+
156
+ it 'twice a week 0,6' do
157
+ expect(desc('46 9 * * 0,6')).to eq('Um 9:46 AM, nur an Sonntag und Samstag')
158
+ end
159
+
160
+ it 'twice a week 6,7' do
161
+ expect(desc('46 9 * * 6,7')).to eq('Um 9:46 AM, nur an Samstag und Sonntag')
162
+ end
163
+ end
164
+
165
+ context 'twice a week non zero based:' do
166
+ it 'twice a week 1,2' do
167
+ expect(desc('46 9 * * 1,2', opts)).to eq('Um 9:46 AM, nur an Sonntag und Montag')
168
+ end
169
+
170
+ it 'twice a week SUN,MON' do
171
+ expect(desc('46 9 * * SUN,MON', opts)).to eq('Um 9:46 AM, nur an Sonntag und Montag')
172
+ end
173
+
174
+ it 'twice a week 6,7' do
175
+ expect(desc('46 9 * * 6,7', opts)).to eq('Um 9:46 AM, nur an Freitag und Samstag')
176
+ end
177
+ end
178
+
179
+ it 'day of month' do
180
+ expect(desc('23 12 15 * *')).to eq('Um 12:23 PM, am 15 Tag des Monats')
181
+ end
182
+
183
+ it 'day of month with day of week' do
184
+ expect(desc('23 12 15 * SUN')).to eq('Um 12:23 PM, am 15 Tag des Monats, nur an Sonntag')
185
+ end
186
+
187
+ it 'month name' do
188
+ expect(desc('23 12 * JAN *')).to eq('Um 12:23 PM, nur in Januar')
189
+ end
190
+
191
+ it 'day of month with question mark' do
192
+ expect(desc('23 12 ? JAN *')).to eq('Um 12:23 PM, nur in Januar')
193
+ end
194
+
195
+ it 'month name range 2' do
196
+ expect(desc('23 12 * JAN-FEB *')).to eq('Um 12:23 PM, Januar bis Februar')
197
+ end
198
+
199
+ it 'month name range 3' do
200
+ expect(desc('23 12 * JAN-MAR *')).to eq('Um 12:23 PM, Januar bis März')
201
+ end
202
+
203
+ it 'day of week name' do
204
+ expect(desc('23 12 * * SUN')).to eq('Um 12:23 PM, nur an Sonntag')
205
+ end
206
+
207
+ context 'day of week range:' do
208
+ it 'day of week range MON-FRI' do
209
+ expect(desc('*/5 15 * * MON-FRI')).to eq('Alle 5 Minuten, um 3:00 PM, Montag bis Freitag')
210
+ end
211
+
212
+ it 'day of week range 0-6' do
213
+ expect(desc('*/5 15 * * 0-6')).to eq('Alle 5 Minuten, um 3:00 PM, Sonntag bis Samstag')
214
+ end
215
+
216
+ it 'day of week range 6-7' do
217
+ expect(desc('*/5 15 * * 6-7')).to eq('Alle 5 Minuten, um 3:00 PM, Samstag bis Sonntag')
218
+ end
219
+ end
220
+
221
+ context 'day of week once in month:' do
222
+ it 'day of week once MON#3' do
223
+ expect(desc('* * * * MON#3')).to eq('Jede Minute, am dritten Montag des Monats')
224
+ end
225
+
226
+ it 'day of week once 0#3' do
227
+ expect(desc('* * * * 0#3')).to eq('Jede Minute, am dritten Sonntag des Monats')
228
+ end
229
+ end
230
+
231
+ context 'last day of week of the month:' do
232
+ it 'last day of week 4L' do
233
+ expect(desc('* * * * 4L')).to eq('Jede Minute, am letzten Donnerstag des Monats')
234
+ end
235
+
236
+ it 'last day of week 0L' do
237
+ expect(desc('* * * * 0L')).to eq('Jede Minute, am letzten Sonntag des Monats')
238
+ end
239
+ end
240
+
241
+ it 'last day of the month' do
242
+ expect(desc('*/5 * L JAN *')).to eq('Alle 5 Minuten, am letzten Tag des Monats, nur in Januar')
243
+ end
244
+
245
+ it 'time of day with seconds' do
246
+ expect(desc('30 02 14 * * *')).to eq('Um 2:02:30 PM')
247
+ end
248
+
249
+ it 'second intervals' do
250
+ expect(desc('5-10 * * * * *')).to eq('Sekunden 5 bis 10 vergangene Minute')
251
+ end
252
+
253
+ it 'second minutes hours intervals' do
254
+ expect(desc('5-10 30-35 10-12 * * *')).to eq(
255
+ 'Sekunden 5 bis 10 vergangene Minute, Minuten 30 bis 35 nach der vergangenen Stunde, zwischen 10:00 AM und 12:59 PM')
256
+ end
257
+
258
+ it 'every 5 minutes at 30 seconds' do
259
+ expect(desc('30 */5 * * * *')).to eq('Am 30 Sekunden nach der vergangenen Minute, Alle 5 Minuten')
260
+ end
261
+
262
+ it 'minutes past the hour range' do
263
+ expect(desc('0 30 10-13 ? * WED,FRI')).to eq(
264
+ 'Um 30 Minuten vergangene Stunde, zwischen 10:00 AM und 1:59 PM, nur an Mittwoch und Freitag')
265
+ end
266
+
267
+ it 'seconds past the minute interval' do
268
+ expect(desc('10 0/5 * * * ?')).to eq('Am 10 Sekunden nach der vergangenen Minute, Alle 5 Minuten')
269
+ end
270
+
271
+ it 'between with interval' do
272
+ expect(desc('2-59/3 1,9,22 11-26 1-6 ?')).to eq(
273
+ 'Alle 3 Minuten, Minuten 02 bis 59 nach der vergangenen Stunde, um 1:00 AM, 9:00 AM und 10:00 PM, zwischen Tag 11 und 26 des Monats, Januar bis Juni')
274
+ end
275
+
276
+ it 'recurring first of month' do
277
+ expect(desc('0 0 6 1/1 * ?')).to eq('Um 6:00 AM')
278
+ end
279
+
280
+ it 'minutes past the hour' do
281
+ expect(desc('0 5 0/1 * * ?')).to eq('Um 05 Minuten vergangene Stunde')
282
+ end
283
+
284
+ it 'every past the hour' do
285
+ expect(desc('0 0,5,10,15,20,25,30,35,40,45,50,55 * ? * *')).to eq(
286
+ 'Um 00, 05, 10, 15, 20, 25, 30, 35, 40, 45, 50 und 55 Minuten vergangene Stunde')
287
+ end
288
+
289
+ it 'every x minute past the hour with interval' do
290
+ expect(desc('0 0-30/2 17 ? * MON-FRI')).to eq(
291
+ 'Alle 2 Minuten, Minuten 00 bis 30 nach der vergangenen Stunde, um 5:00 PM, Montag bis Freitag')
292
+ end
293
+
294
+ it 'one year only with seconds' do
295
+ expect(desc('* * * * * * 2013')).to eq('Jede Sekunde, nur in 2013')
296
+ end
297
+
298
+ it 'one year only without seconds' do
299
+ expect(desc('* * * * * 2013')).to eq('Jede Minute, nur in 2013')
300
+ end
301
+
302
+ it 'two years only' do
303
+ expect(desc('* * * * * 2013,2014')).to eq('Jede Minute, nur in 2013 und 2014')
304
+ end
305
+
306
+ it 'year range 2' do
307
+ expect(desc('23 12 * JAN-FEB * 2013-2014')).to eq('Um 12:23 PM, Januar bis Februar, 2013 bis 2014')
308
+ end
309
+
310
+ it 'year range 3' do
311
+ expect(desc('23 12 * JAN-MAR * 2013-2015')).to eq('Um 12:23 PM, Januar bis März, 2013 bis 2015')
312
+ end
313
+
314
+ context 'multi part range seconds:' do
315
+ it 'multi part range seconds 2,4-5' do
316
+ expect(desc('2,4-5 1 * * *')).to eq('Minuten 02,04 bis 05 nach der vergangenen Stunde, um 1:00 AM')
317
+ end
318
+
319
+ it 'multi part range seconds 2,26-28' do
320
+ expect(desc('2,26-28 18 * * *')).to eq('Minuten 02,26 bis 28 nach der vergangenen Stunde, um 6:00 PM')
321
+ end
322
+ end
323
+
324
+ context 'minutes past the hour:' do
325
+ it 'minutes past the hour 5,10' do
326
+ expect(desc('5,10 0 * * *')).to eq('Um 05 und 10 Minuten vergangene Stunde')
327
+ end
328
+
329
+ it 'minutes past the hour 5,10 day 2' do
330
+ expect(desc('5,10 0 2 * *')).to eq('Um 05 und 10 Minuten vergangene Stunde, am 2 Tag des Monats')
331
+ end
332
+
333
+ it 'minutes past the hour 5/10 day 2' do
334
+ expect(desc('5/10 0 2 * *')).to eq('Alle 10 Minuten, beginnend um 05 Minuten vergangene Stunde, am 2 Tag des Monats')
335
+ end
336
+ end
337
+
338
+ context 'seconds past the minute:' do
339
+ it 'seconds past the minute 5,6' do
340
+ expect(desc('5,6 0 0 * * *')).to eq('Am 5 und 6 Sekunden nach der vergangenen Minute')
341
+ end
342
+
343
+ it 'seconds past the minute 5,6 at 1' do
344
+ expect(desc('5,6 0 1 * * *')).to eq('Am 5 und 6 Sekunden nach der vergangenen Minute, um 1:00 AM')
345
+ end
346
+
347
+ it 'seconds past the minute 5,6 day 2' do
348
+ expect(desc('5,6 0 0 2 * *')).to eq('Am 5 und 6 Sekunden nach der vergangenen Minute, am 2 Tag des Monats')
349
+ end
350
+ end
351
+
352
+ context 'increments starting at X > 1:' do
353
+ it 'second increments' do
354
+ expect(desc('5/15 0 * * * *')).to eq('Alle 15 Sekunden, beginnend am 5 Sekunden nach der vergangenen Minute')
355
+ end
356
+
357
+ it 'minute increments' do
358
+ expect(desc('30/10 * * * *')).to eq('Alle 10 Minuten, beginnend um 30 Minuten vergangene Stunde')
359
+ end
360
+
361
+ it 'hour increments' do
362
+ expect(desc('0 30 2/6 * * ?')).to eq('Um 30 Minuten vergangene Stunde, Alle 6 Stunden, beginnend um 2:00 AM')
363
+ end
364
+
365
+ it 'day of month increments' do
366
+ expect(desc('0 30 8 2/7 * *')).to eq('Um 8:30 AM, Alle 7 Tagen, beginnend am 2 Tag des Monats')
367
+ end
368
+
369
+ it 'day of week increments' do
370
+ expect(desc('0 30 11 * * 2/2')).to eq('Um 11:30 AM, jeden 2 Tag der Woche, beginnend an Dienstag')
371
+ end
372
+
373
+ it 'month increments' do
374
+ expect(desc('0 20 10 * 2/3 THU')).to eq('Um 10:20 AM, nur an Donnerstag, Alle 3 Monaten, beginnend in Februar')
375
+ end
376
+
377
+ it 'year increments' do
378
+ expect(desc('0 0 0 1 MAR * 2010/5')).to eq('Um 12:00 AM, am 1 Tag des Monats, nur in März, Alle 5 Jahren, beginnend in 2010')
379
+ end
380
+ end
381
+ end
382
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cronex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrian Kazaku
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-18 00:00:00.000000000 Z
11
+ date: 2019-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tzinfo
@@ -113,12 +113,14 @@ files:
113
113
  - lib/cronex/resource.rb
114
114
  - lib/cronex/utils.rb
115
115
  - lib/cronex/version.rb
116
+ - resources/resources_de.yml
116
117
  - resources/resources_en.yml
117
118
  - resources/resources_fr.yml
118
119
  - resources/resources_pt_BR.yml
119
120
  - resources/resources_ro.yml
120
121
  - resources/resources_ru.yml
121
122
  - spec/casing_spec.rb
123
+ - spec/exp_descriptor_de_spec.rb
122
124
  - spec/exp_descriptor_en_spec.rb
123
125
  - spec/exp_descriptor_fr_spec.rb
124
126
  - spec/exp_descriptor_pt_BR_spec.rb
@@ -151,6 +153,7 @@ specification_version: 4
151
153
  summary: Ruby library that converts cron expressions into human readable strings
152
154
  test_files:
153
155
  - spec/casing_spec.rb
156
+ - spec/exp_descriptor_de_spec.rb
154
157
  - spec/exp_descriptor_en_spec.rb
155
158
  - spec/exp_descriptor_fr_spec.rb
156
159
  - spec/exp_descriptor_pt_BR_spec.rb